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......
:
Verschoben durch User
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 ...
1 | Lux1 = ReadLuxes(); |
... funktionieren soll, wenn ...
1 | extern void ReadLuxes(void); |
... ReadLuxes keinen Wert zurückliefert?
:
Bearbeitet durch User
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 | extern double ReadLuxes( void ); |
und muss das dann aber auch tatsächlich tun
1 | double ReadLuxes( void ) |
2 | {
|
3 | ....
|
4 | |
5 | return Lux; |
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
:
Bearbeitet durch User
@ 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
Karl Heinz schrieb: >> Meine "Buch" ist das Forum hier > Dann viel Spass noch in der Zukunft. ROFL, der war gut!
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.