Hallo miteinander,
ich baue mir gerade eine Library für den TSL2561 Lichtsensor mit Fleury
zurecht, allerdings bekomme ich die Fehlermeldung:
main.c:53: error: void value not ignored as it ought to be
Das ist nur eine Kleinigkeit, aber ich komme einfach nicht dahinter.
Wer könnte mir bitte kurz helfen?
Danke im Vorraus......
Stefan B. schrieb:> main.c:53: error: void value not ignored as it ought to be>> Das ist nur eine Kleinigkeit, aber ich komme einfach nicht dahinter.> Wer könnte mir bitte kurz helfen?
Kannst du mir mal erklären, wie das hier ...
Hi Karl Heinz,
nice to meet you here ;)
Ähhm, ja, hmm.....gute Frage....
Ich meine, die Funktionen sind ja in der tsl2561.c definiert. Ich
möchte, dass ich den "Lux-Wert" in die Main.c bekomme.
Da hab ich doch nen größeren Denkfehler drin :(
Stefan B. schrieb:> Ich meine, die Funktionen sind ja in der tsl2561.c definiert.
Das ist ja alles schön und gut.
Aber wenn du die Anweisung hast
1
// Frag Karl Heinz nach Popcorn und lege es in die Lade
2
Lade = gibPopcorn();
und ich gebe dir einfach kein Popcorn
1
extern void gibPopcorn(void);
2
====
dann hast du ein Problem. Einer von uns beiden muss nachgeben. Entweder
du kannst dann eben nichts in die Lade legen oder ich muss dir Popcorn
geben.
1
extern double gibPopcorn(void);
Anders geht es nun mal nicht. Ansonsten leben wir in einer
widersprüchlichen Welt, wenn du etwas in eine Lade legen kannst, was ich
dir nicht gebe.
> möchte, dass ich den "Lux-Wert" in die Main.c bekomme.
Ja, dann musst du das wohl auch machen.
Die Funktion muss einen Wert liefern
1
externdoubleReadLuxes(void);
und muss das dann aber auch tatsächlich tun
1
doubleReadLuxes(void)
2
{
3
....
4
5
returnLux;
6
}
und dann kann derjenige, der die Funktion aufruft mit dem Returnwert,
den die Funktion liefert, auch was tun. Zb. in einer Variablen
speichern.
1
Lux1=ReadLuxes();
Aber wenn eine Funktion keinen Returnwert hat, dann ist es nur logisch,
das man mit einem nicht existenten Returnwert auch nichts tun kann.
> Da hab ich doch nen größeren Denkfehler drin :(
Nein. Du hast kein C-Buch bzw. du hast eines aber hast es nicht
durchgearbeitet. Und das predige ich jetzt seit mehr als 12 Jahren: Ohne
C-Buch kommt ihr nicht weit, weil man mit lediglich 10% Kentnisse über
seiner Sprache nun mal eben nicht weit kommt. Aber mir glaubt ja keiner.
Ja, das mit dem C-Buch ist so eine Sache. Klar ist es besser, wenn man
die Zeit dafür hat.
Ich muss Dir allerdings beichten, wie Recht Du hast....ABER.....ich
mache sehr viel mit Learning-by-doing. Bin damit, für meine
Verhältnisse, schon sehr weit gekommen. Zumindest das, was ich in mein
NetIO einbauen wollte, habe ich gemacht und es funzt.
Ich betreibe die "Programmiererei als reines Hobby. Bis jetzt bin ganz
gut gefahren damit und so oft melde ich mich auch nicht hier. Meine
"Buch" ist das Forum hier ;)
Ich probier das mal mit dem "double" aus......
Stefan B. schrieb:> Ja, das mit dem C-Buch ist so eine Sache. Klar ist es besser, wenn man> die Zeit dafür hat.
Ja natürlich.
Es ist ja auch viel einfacher in einem Forum sich Achtelwissen
zusammenzuschnorren, als die Dinge ein für allemal richtig zu lernen.
> Bin damit, für meine Verhältnisse, schon sehr weit gekommen.
Du wirst C NIE richtig können. Schon alleine aus dem Grund, weil es
1000-ende Dinge gibt, von denen du nichts weißt und nach denen du daher
auch nicht fragen kannst. Ganz abgesehen davon, dass dir hier keiner in
8 Sätzen all die Details erzählen kann und erzählen wird, die man
eigentlich wissen sollte, und die in einem Buch auf 15 Seiten
abgehandelt werden.
> Ich betreibe die "Programmiererei als reines Hobby.
bla, bla, bla, bla.
AUch wer nur am Sonntag Nachmittag einen Radausflig machen will, muss
trotzdem radfahren lernen.
Das was du als 'Hobby' bezeichnest, ist noch nicht mal untere Grenze.
Bis zu einem Profi fehlt es noch weit, sehr weit. Das ist aber nicht
das, wovon ich spreche. Wer nach Schweden auswandert und nur 3 Worte
Schwedisch kann, wird auf die Nase fallen. Selbst dann wenn ernicht
Dolmetscher werden will. Ich kann dieses Argument nicht mehr hören.
Niemand verlangt von dir, dir das Wissen eines Profis anzueignen. Aber
das was jeder Hobby-Programmierer auf unterstem Level können muss, das
verlange ich von dir.
> Meine "Buch" ist das Forum hier
Dann viel Spass noch in der Zukunft.
Stefan B. schrieb:> ....ABER.....ich mache sehr viel mit Learning-by-doing.> Bin damit, für meine Verhältnisse, schon sehr weit gekommen.
Nur impliziert dieses "Stochern im Nebel bis man was trifft", dass man
gelegentlich andere Leute mit Fragen nervt, die man mit ein wenig gutem
Willen locker selber hätte beantworten können. Entsprechende gestimmte
Antworten gibts dann gratis.
Ich verlange auch nicht, dass mir hier jemand C beibringt. Davon war
auch nie die Rede. Ich melde mich äußerst selten hier, wobei ich fast
jede freie Minute vorm Rechner sitze und Sachen "verbessere" oder
ändere.
Und wenn ich wirklich mal nicht weiter komme, dann erlaube ich mir, hier
zu fragen. Auch wenn es für Dich Kleinigkeiten sind.
Ich betreibe dieses als Hobby, ob es einer verstehen mag oder nicht. Ich
habe gefallen dran und es macht mir Spaß! Ich werd mich auch nie
Programmierer nen, zu Deiner Beruhigung.
Und warum soll man denn man nicht fragen dürfen? Dafür sind doch Foren
da. Wenn jemand nicht antworten möchte, braucht er das doch nicht
machen. Es liegt ja in seinem Ermessen.
Ich verstehe nicht, warum das hier immer in einer rießen Diskussion
ausarten muss?!?! Das Forum ist öffentlich, dachte ich. Wenn jemand
unter sich bleiben möchte, dann könnte man doch gewisse Vorkehrungen
treffen.
Nicht?
Du verstehst nicht, warum jemand der eine tropfende Rohrhleitung in der
Heizung dadurch repariert, indem er mit dem Hammer aufs Rohr klopft
(weil das alles ist was er kann), vom Heizungsbauer gerügt wird?
Auf dem Level bewegen wir uns da bei Returnwerten von Funktionen.
Absolute Basics. Keine Hexerei und etwas, das auch Hobbyprogrammierer im
Schlaf beherrschen müssen.
Wie gesagt: viel Spass
@ Stefan B. (sibbl)
Das Unverständnis mit dem Du der Kritik hier begegnest ist doch geradezu
symptomatisch für Deine gesamte Haltung.
Du bist unfähig andere, als Deine eigenen Gedanken und Meinungen
anzunehmen und zu berücksichtigen. Ob das nun solche über Deine
Handlungsweise oder Beschreibungen einer Programmiersprache sind.
Ob Du nun die Haltung von Karl Heinz und anderen hier für sinnvoll und
zweckmäßig hälst, ist völlig unwichtig. Sie besteht nun einmal und
entweder Du richtest Dich danach oder Du wirst immer wieder kritisiert.
Da Du der Fragende bist, hast Du Dich nach den Gefragten zu richten. So
einfach ist das.
Im übrigen hat Dir ja Karl Heinz ja in seiner ersten Antwort noch ohne
Kritik und zielführend geantwortet. Obwohl ja eigentlich die
Fehlermeldung völlig ausreichend gewesen wäre. Erst als Du
offensichtlich keinerlei Willen oder Fähigkeit zur Reflektion bewiesen
hast, sondern nur mit dem Satz "da mache ich wohl einen Gedankenfehler"
den Ball zurückgespielt hast, kam die Kritik.
Das ist der Grund. So, nun weisst Du es hoffentlich.
Stefan B. schrieb:> Ich probier das mal mit dem "double" aus......
Etwas komisch ist ja, daß du das Konzept des Return-Wertes in der
letzten Zeile von ReadLuxes beim Aufruf von Calculate benutzt. Selbst
mit trial-and-error liegt die benötigte Transferleistung, den Wert auf
die gleiche Art und Weise jetzt auch aus ReadLuxes heraus zurückzugeben,
durchaus im Bereich die Möglichen.
Oliver
be stucki schrieb:> Hier ist eine gute kostenlose Anlaufstelle:> http://openbook.galileocomputing.de/c_von_a_bis_z/
Vorsicht! Dieses Buch ist alles andere als gut und enthält zum Teil
himmelschreienden Unsinn. Finger weg von solchem Pfusch!
Leider ist das Angebot empfehlenswerter C-Bücher nicht besonders groß.
Es gibt einfach sehr viel Schund.
Ich würde empfehlen, auf die 2. Auflage des K&R-Buchs zurückzugreifen:
> http://cm.bell-labs.com/cm/cs/cbook/
Gibt's halt nicht kostenlos. Dafür wird das Durcharbeiten aber reichlich
belohnt. Das Buch vermittelt Grundlagen, die ich in anderen
Einsteigerbüchern, insbesondere solchen jüngeren Alters, stark vermisse.
Konkret meine ich damit sowas wie die Implementierung eines einfachen
malloc oder von Buffered IO wie in hinteren K&R-Kapiteln.
Sind zwar schon ein paar Tage vergangen, aber ich möchte trotzdem noch
auf ein paar Antworten reagieren:
Bitflüsterer schrieb:> @ Stefan B. (sibbl)>> Das Unverständnis mit dem Du der Kritik hier begegnest ist doch geradezu> symptomatisch für Deine gesamte Haltung.>> Du bist unfähig andere, als Deine eigenen Gedanken und Meinungen> anzunehmen und zu berücksichtigen. Ob das nun solche über Deine> Handlungsweise oder Beschreibungen einer Programmiersprache sind.>> Ob Du nun die Haltung von Karl Heinz und anderen hier für sinnvoll und> zweckmäßig hälst, ist völlig unwichtig. Sie besteht nun einmal und> entweder Du richtest Dich danach oder Du wirst immer wieder kritisiert.>> Da Du der Fragende bist, hast Du Dich nach den Gefragten zu richten. So> einfach ist das.
Möglicherweise habe ich ein bißchen überspitzt reagiert und ich möchte
mich im Nachhinein dafür entschuldigen. Speziell bei Karl Heinz.
Bitflüsterer schrieb:> Erst als Du> offensichtlich keinerlei Willen oder Fähigkeit zur Reflektion bewiesen> hast, sondern nur mit dem Satz "da mache ich wohl einen Gedankenfehler"> den Ball zurückgespielt hast, kam die Kritik.
Ich werde es mir für die Zukunft merken und werde mehr Eigeninitiative
bezüglich meiner Fragen zeigen.
Im übrigen habe ich alles hinbekommen. Der Sensor und mittlererweile
auch ein 2ter der gleichen Sorte sind seit ein paar Tagen im Einsatz.
Einer draußen im Freien und einer in meiner Wohnung. Der TSL2561 im
Außenbereich stimmt annähernd mit einem Referenzgerät (Testo 540)
überein. Sowohl im oberen als auch im unteren Bereich.
Den im Innenraum musste ich etwas empfindlicher machen, da bei ambienten
Lichtverhältnissen nicht viel zu messen ist. Da gehts mir nur darum,
hell und dunkel zu erkennen.
Danke und Gruss und ein schönes WE