У меня есть несколько часто используемых макросов, которые повсеместно необходимы почти в каждом C-файле, который я пишу. В настоящее время я копирую их в каждый файл, в котором они мне нужны. Вероятно, это плохая идея, потому что в конечном итоге мне понадобится изменить один из них, и в результате я получу непоследовательно определенные макросы между файлами.
Есть ли способ создать заголовочный файл для макросов? Я попытался создать заголовок со всеми моими макросами и включить его, но я все еще получаю предупреждения компилятора.
UPDATE:
Конкретные предупреждения, которые я получаю, являются неявными объявлениями функций, таких как V4, из второго примера.
Пример:
//file1.c
#define COMMON_NUMBER 1
//file2.c
#define COMMON_NUMBER 1
//...
//fileN.c
#define COMMON_NUMBER 1
//Oh wait, it should have been 2 all along..... *facepalm*
Лучший пример:
//file1.c
#include "usefulmacros.h"
char* prog;
int optv;
int main(){
prog = strdup(argv[0]);
optv = 4; // This would be parsed from # of "-v" in argv[]
return 0;
}
void functionA(){
int dumberror = 1;
V4("This is a fairly verbose error: %d",dumberror);
}
//file2.c
#include "usefulemacros.h"
extern char* prog;
extern int optv;
void functionB(){
int differror = 2;
V4("This is a different error: %d",differror);
}
//usefulmacros.h
#ifndef USEFULMACROS
#define V4(str, ...) if(optv >= 4){printf("%s: "str,prog,__VA_ARGS__);}
#endif