0

我正在编写一个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不允许使用。有什么建议么?

4

1 回答 1

0

让链接器完成它应该做的工作。

将函数放入其自己的源文件中,然后将其构建到库中,例如liboptional.a.

当需要创建可执行文件时,请使用该库,例如:

gcc -o execfile file1.o file2.o -loptional

在链接器看到 时-l optional,它将使用该库中的对象来满足未定义的引用。因此,如果您使用file1.oor中的函数file2.o,它将被包含在内。

于 2015-08-03T02:16:18.760 回答