falsche Fehlermeldung bei Modularisierungsversuch

OP #1194215
Hallo,
als Vorübung zur Modularisierung eines anwachsenden
C-Programmes habe ich versucht, aus der großen
Quelldatei probehalber einmal eine Funktion in eine
separate Quelldatei auszulagern:

Die neue Quelldatei heißt umrechng.c

#include <was hier gebraucht wird>
uint16_t berechng(uint16 q)
{  uint16_t t100 ;
    t100 = q * ....(div Algorithmen)
  return (erg);
}

dazu eine Headerdatei umrechng.h

ifndef _UMRECHNG_H
  #define _UMRECHNG_H
#include <was hier gebraucht wird>
  void berechng(void);
#endif


und in rumpf.c gibt es den Funktionsaufruf

int main(void)
        uint16_t a, b, c;
        a = berechng(c);
        .....

Die Syntax ist in autoditaktischer Manier aus verschiedenen
Quellen vom Forum / Tutorial bzw. meinen C-Büchern zusammengeklaubt,
eine richtig zusammenhängende Darstellung der Syntax hatte ich nicht
gefunden.
Vielleicht ist meine Syntax richtig - vom Compiler wird sie jedenfalls
nicht beanstandet.

Was er aber bemängelt, ist mir unverständlich:
error: too many arguments to function berechng
error: void value not ignored as it ought to be

Eigenartig an der Fehlermeldung ist, daß ich früher, als die Funktion
noch Teil der main.c war, diese Fehlermeldung nicht bekam, da lief
das Programm einwandfrei und die aus main aufgerufene Funktion 
verarbeitete den übergebenen Wert ganz korrekt.
Nun habe ich die Funktion nur in die neue Datei verschoben und eine
Headerdatei hinzugefügt und aus ist es.

Hat jemand eine Idee, woran das liegen könnte?

Vielen Dank schon mal
Egon
#1194227
Hallo,

Du hast in Deiner Headerdatei
  void berechng(void);

Deine Funktion ist

uint16_t berechng(uint16 q)

Fällt Dir da was auf?

Was er aber bemängelt, ist mir unverständlich:
error: too many arguments to function berechng
error: void value not ignored as it ought to be

Der Compiler hat doch recht:
Du sagst ihm, es gibt eine Funktion ohne Übergabeparameter und ohne 
Rückgabewert.
Dann rufst Du sie aber doch mit Parameter auf und er mault...
Du gibst einen Wert zurück, hast aber erklärt, die Funktion hat keinen 
Rückgabewert.
Mault er also wieder zurecht.

Bring eben den Prototy der Funktion in Ordnung.

Gruß aus Berlin
Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.