Повторное использование макроса C в нескольких файлах

У меня есть несколько часто используемых макросов, которые необходимы практически в каждом файле C, который я пишу. В настоящее время я копирую их в каждый файл, в котором они мне нужны. Вероятно, это плохая идея, потому что в конечном итоге мне нужно будет изменить один из них, и тогда я получу несогласованно определенные макросы между файлами.

Есть ли способ создать заголовочный файл для макросов? Я попытался создать заголовок со всеми моими макросами и включить его, но все равно получаю предупреждения компилятора.

ОБНОВЛЕНИЕ: Конкретные предупреждения, которые я получаю, являются неявными объявлениями функций, таких как 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
5
задан Benjamin 31 January 2014 в 23:42
поделиться