Ich hab mal eine kleines Frage zum einbinden von Sourcefiles unter
Verwendung des Programms Mfile.
Dort existiert ja die Möglichkeit C/C++ sourcefile(s) anzugeben. Ich
kenne es nur so, dass man bei der Aufspaltung seines Projects in C mit
Header Dateien arbeitet. Wie kann ich denn die Verbindung zwischen
Sourcefile und Headerfile erstellen. Oder include ich im Hauptprogramm
einfach ein "XXX.c" Das sieht ganz schön seltsam aus.
Wenn mir jedmand weiterhelfen kann, bin ich ihm sehr dankbar.
Die C-Dateien gibst du im Makefile an.
.h-Dateien baust du dazu (entweder eine einzige fürs ganze Projekt
oder eine pro C-Datei, wie du gern magst), um die exportierten Daten,
Typen und Funktionen der einzelnen C-Dateien den anderen C-Dateien
kund zu tun. Diese werden dann mittels #include in die C-Dateien
eingebunden, damit sie Kenntnis bekommen, welche Sachen in den
anderen C-Dateien vorhanden sind.
Das klingt gut. Genau so möchte ich es gerne haben aber nun bekomme ich
die Fehlermeldung:
warning: function declaration isn't a prototype
wenn die Funktionen Parameter erwarten. Wie kann ich diesen Fehler
vermeiden???
Also nur bei den unteren Funktionen im Header ärgert er mich. Wenn ich
noch irgendwelche Fehler gemacht habe, könnt ihr mich gerne darauf
hinweisen. Ich lerne gerne g
gut da war ich etwas zu schnell ;)
mach statt
static void SSA_test (void);
void SSA_test (void);
btw wtf soll static bei so ner lustigen funktion??? ich sehe schon sinn
dabei wenns sich um klassen dreht aber in c???
73
> btw wtf soll static bei so ner lustigen funktion??? ich sehe schon> sinn dabei wenns sich um klassen dreht aber in c?
Guter Programmierstil. Alles, was nicht exportiert sein muss, soll
auch nicht exportiert werden.
gut das jetzt WE ist.. da werd ich dann gleich mal ansi wälzen...
wie meinst du exportiert??? aus dem file raus oder wie ???
und warum zum teufel tut der dann da meinen, dass das kein prototyp
ist???
73
Sorry wegen dem static. Das war auch nur ein verzweifelter Versuch den
Fehler zu beseitigen. Doch auch ohne static bekomme ich immer noch
diese Fehlermeldung. Habt ihr vielleicht noch nen kleinen Denkanstoß
für mich heute morgen?
meiner meinung nach müssste
void SSA_test (void) {
so aussehen..
void SSA_test () {
wobei ich mir da nicht sicher bin..
vergleich mal die zeile wo sich der compiler aufregt mit der zeile wo
die funktion beginnt... wenn die gleich sind void weg.. sonnst unserren
gcc-guru befragen G
73
> wie meinst du exportiert??? aus dem file raus oder wie ???
Ja, ohne "static" ist der Bezeichner global (über alle Module)
bekannt, sonst nur innerhalb des Moduls. Ergo, alles was man nur
innerhalb braucht, macht man static.
> meiner meinung nach müssste> void SSA_test (void) {> so aussehen..> void SSA_test () {
In C++ wäre beides dasselbe, in C nicht. In C wäre letzteres eine
non-prototype declaration (falls es selbst die Deklaration darstellt,
im Beispiel stand aber eine drüber und es ist nur die Definition).
Nö, aus dem geposteten Quelltext ist nicht ersichtlich, was der
Compiler wo bemängelt haben sollte.
wie oben schon gesagt, meckert er nur bei den beiden unteren Funktionen
mit Parameter (das verstehe ich ja gerade nicht). Der genaue Fehler
lautet:
8bitbcd.h:2: error: parse error before "num"
8bitbcd.h:2: warning: function declaration isn't a prototype
8bitbcd.h:3: error: parse error before "num"
8bitbcd.h:3: warning: function declaration isn't a prototype
wobei die Headerdatei bislang auch nur aus diesen ersten drei Zeilen
besteht, die ich oben schon gepostet habe.
Das klingt ganz gut.... Muss aber leider kurz mal ne Pause einlegen...
Werde es ausprobieren und mich dann später wieder melden. Vielendank
aber schon mal für eure zahlreiche Hilfe. Bin immer wieder froh, dass
es Leute wie euch gibt.
Mist... ich kann mich einfach nicht vom PC losreißen aber dafür war dein
Tip richtig, Hans. Ihm felhte die <stdint.h>. Nochmals vielen Dank!
Vielleicht kann ich mich ja mal revangieren.
Eine eigene Frage?
Dieser Thread ist über 21 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.