Я хочу использовать локальный файл .h для определения тех же имен, которые используются в моей библиотеке.Моя библиотека имеет определение значения по умолчанию для этих имен, но я бы хотел изменить это значение по умолчанию, используя локальный файл .h.Тем не менее, у меня есть нежелательное поведение.Как я могу решить это?
test.c
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "conf.h"
#include "mylib.h"
int main ()
{
printf("Value in main: %d\n", NAMEDEFINITION);
fn();
return 0;
}
conf.h
#define NAMEDEFINITION 42
mylib.h
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#ifndef NAMEDEFINITION
#define NAMEDEFINITION 84
#endif
void fn();
mylib.c
#include "mylib.h"
void fn()
{
printf("Value in fn: %d\n", NAMEDEFINITION);
return;
}
Моя строка компиляции и вывод:
user@local:~/user/test/c$ gcc test.c mylib.c -o test
user@local:~/user/test/c$ ./test
Value in main: 42
Value in fn: 84
[EDITED]
Я бы хотел, чтобы NAMEDEFINITION было "42", когда я определяю его в conf.h, затем выведите «42» за два вызова main ().Если он не определен в файле conf.h, его значением по умолчанию будет «84» (выведите «84» в двух вызовах main ().