我正在编写一个 C 程序,并希望编写一个函数,这样,如果某个宏至少使用一次,则该函数将在目标文件恰好一次。
我正在考虑以下几点:
#define CERTAIN_MACRO \
...some code here... \
#include "myfunction.h"
(在myfunction.h中添加我的功能代码,使用合适的包含防护措施以防止多次包含),或者
#define CERTAIN_MACRO \
...some code here... \
#define USE_MY_FUNCTION
#ifdef USE_MY_FUNCTION
my function code
#endif
但不起作用,因为在宏扩展代码中不允许使用#define
和#include
。有什么建议吗?
答案 0 :(得分:0)
让链接器完成其意图的工作。
将函数放入自己的源文件中,然后将其构建到库中,比如说liboptional.a
。
在创建可执行文件时,请使用该库,例如:
gcc -o execfile file1.o file2.o -loptional
当链接器看到-l optional
时,它将使用该库中的对象来满足未定义的引用。因此,如果您使用file1.o
或file2.o
中的功能,则会将其包含在内。