Forum: Compiler & IDEs void value not ignored as it ought to be - Problem


von Stefan B. (sibbl) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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
von Stefan B. (sibbl) Benutzerseite


Lesenswert?

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 :(

von Karl H. (kbuchegg)


Lesenswert?

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
von Stefan B. (sibbl) Benutzerseite


Lesenswert?

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......

von Karl H. (kbuchegg)


Lesenswert?

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
von (prx) A. K. (prx)


Lesenswert?

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.

von Stefan B. (sibbl) Benutzerseite


Lesenswert?

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.

von Stefan B. (sibbl) Benutzerseite


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von Bitflüsterer (Gast)


Lesenswert?

@ 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.

von B. S. (bestucki)


Lesenswert?

Hier ist eine gute kostenlose Anlaufstelle:
http://openbook.galileocomputing.de/c_von_a_bis_z/

von Oliver (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

Karl Heinz schrieb:
>> Meine "Buch" ist das Forum hier
> Dann viel Spass noch in der Zukunft.

ROFL, der war gut!

von working directory (Gast)


Lesenswert?

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.

von Stefan B. (sibbl) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.