C Funktion in Header aufrufen?

Gast #3718180
Lesenswert?

Hallo,

Ich möchte in einem C-Programm eine ausgealgerte Funktion im Header 
aufrufen.
1
-----Main.c-------
2
#include <stdio.h>
3
#include "Modul1.h"
4

5
int main(int argc, char *argv[])
6
{
7

8
    int b;
9
    b = getAnzahl(void);
10
    
11
    printf("Anzahl %u\n",b);
12
    printf("Press enter to continue ...");
13
    getchar();  
14
    return 0;
15
}
16

17
-----Modul1.h----------
18
#ifndef __Modul1_H
19
#define __Modul1_H
20

21
extern int getAnzahl(void);
22

23
#endif 
24

25
-----Modul1.c--------
26
#include "Modul1.h"
27

28
int getAnzahl()
29
{
30
    static int a=0;
31
    a++;
32
    return a;    
33
}
Möchte also die Anzahl der Funktionsaufrufe zurückgeben lassen.

Der Compiler meldet:
[Linker Error] undefined reference to `getAnzahl'

Ich scheine etwas grundlegendes zu vergessen, sehe es aber nicht!
#3718201
Lesenswert?

C-Programmierer schrieb:
> #ifndef __Modul1_H
> #define __Modul1_H
Lass die führenden Unterstriche weg. Solche Ausdrücke sind für den 
Compiler reserviert.

C-Programmierer schrieb:
> extern int getAnzahl(void);
Lass das extern weg. Dies wird nur bei Variablen benötigt.

C-Programmierer schrieb:
> b = getAnzahl(void);
Hier das void weglassen.

C-Programmierer schrieb:
> int getAnzahl()
Hier noch ein void in die Klammern.

C-Programmierer schrieb:
> static int a=0;
Mach aus dem int ein unsigned int oder sorge dafür, dass a nicht 
überlaufen kann. Ein Über- oder Unterlauf einer vorzeichenbehafteten 
Variable erzeugt undefiniertes Verhalten.
#3718227
Lesenswert?

Ich kenne wxDevc++ nicht, aber nach dem Screenschoot von der Webseite 
sollte es nicht soviel anders gehen wie bei den meisten IDE.

Auch die IDE hat ein Projekt-Mennu. Da gibt es dann sowas wie Add 
Source.

Oder du kannst über das View-Menue ein Fenster mit Baum-Ansicht sichtbar 
machen, in der das Main.c steht. Rechte Maustaste und Add-Source.
Moderator Persönliche Seite #3718339
Lesenswert?

be stucki schrieb:
>> extern int getAnzahl(void);
> Lass das extern weg. Dies wird nur bei Variablen benötigt.

Es stört allerdings bei Funktionsdeklarationen nicht, es bringt eben
nur nichts weiter.  Dass es sich um eine Deklaration (und nicht eine
Definition) handelt, erkennt der Compiler bei Funktionen bereits
eindeutig daran, dass nach dem Kopf ein Semikolon statt einer öffnenden
geschweiften Klammer folgt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren