Reines C, mehrere c-files aber nur eine header?!?

Hallo zusammen,

ich steh da derzeit vor einem problem, welches sich mir irgendwie nich selbst erklärt, aber ich denke Ihr könnt mir da sicher helfen.

Folgende Situation:

es gibt eine datei main.c und eine datei additional.c, in beiden soll eine funktion matmul() aufgerufen werden.

Um das ganze so allgemein und modular wie möglich zu halten, soll die funktion matmul() in einer datei matlib.c definiert werden.

Diverse Variablen sowie der funktionsprototyp von matmul() sollen jedoch in einer weiteren header-datei abgelegt werden.

Die Frage ist nun:
Wie deklariere ich die funktion in der header-datei, so daß ich nur an einer einzigen stelle im gesammten Projekt diesen funktionsprototypen habe.
Die meisten Compiler stören sich nicht daran, ob die funktion an dieser Stelle extern oder nicht-extern deklariert wurde, Visual C/C++ hingegen schon.

Ich denke die lösung ist relativ simple, aber ich weiß halt nur nicht wie es richtig ist.

Gruß
Matthias

Hallo Matthias,

ich steh da derzeit vor einem problem, welches sich mir
irgendwie nich selbst erklärt, aber ich denke Ihr könnt mir da
sicher helfen.

Folgende Situation:

es gibt eine datei main.c und eine datei additional.c, in
beiden soll eine funktion matmul() aufgerufen werden.

Um das ganze so allgemein und modular wie möglich zu halten,
soll die funktion matmul() in einer datei matlib.c definiert
werden.

Diverse Variablen sowie der funktionsprototyp von matmul()
sollen jedoch in einer weiteren header-datei abgelegt werden.

Die Frage ist nun:
Wie deklariere ich die funktion in der header-datei, so daß
ich nur an einer einzigen stelle im gesammten Projekt diesen
funktionsprototypen habe.
Die meisten Compiler stören sich nicht daran, ob die funktion
an dieser Stelle extern oder nicht-extern deklariert wurde,
Visual C/C++ hingegen schon.

Ich denke die lösung ist relativ simple, aber ich weiß halt
nur nicht wie es richtig ist.

matmul.h:
#ifdef _MAIN_
#define GLOBAL
#else
#define GLOBAL extern
#endif

GLOBAL int a;
GLOBAL long l;
GLOBAL int matmul(int a, int b);

main.c:
#define _MAIN_
#include „matmul.h“
.
.
.

additional.c:
#include „matmul.h“
.
.
.

MfG Peter(TOO)