У меня есть несколько часто используемых макросов, которые необходимы почти в каждом C-файле, который я пишу. В настоящее время я копирую их в каждый файл, в котором они мне нужны. Вероятно, это плохая идея, потому что в конечном итоге мне нужно будет изменить один из них, и тогда я получу несогласованно определенные макросы между файлами.
Есть ли способ создать заголовочный файл для макросов? Я попытался создать заголовок со всеми моими макросами и включить его, но все равно получаю предупреждения компилятора.
ОБНОВЛЕНИЕ. Конкретные предупреждения, которые я получаю, являются неявными объявлениями функций, таких как V4 из второго примера.
Пример:
файл1.с:
#define COMMON_NUMBER 1
файл2.с:
#define COMMON_NUMBER 1
//...
файлN.c:
#define COMMON_NUMBER 1
//Oh wait, it should have been 2 all along..... *facepalm*
Лучший пример:
файл1.с:
#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);
}
файл2.с:
#include "usefulmacros.h"
extern char* prog;
extern int optv;
void functionB(){
int differror = 2;
V4("This is a different error: %d",differror);
}
полезные макросы.h:
#ifndef USEFULMACROS
#define V4(str, ...) if(optv >= 4){printf("%s: "str,prog,__VA_ARGS__);}
#endif
COMMON_NUMBER
может быть глобальной переменнойconst
(или лучше). - person Beta   schedule 06.03.2012#define
в вашемusefulmacros.h
. - person Sergey Kalinichenko   schedule 06.03.2012