gpt4 book ai didi

条件编译: compile once if macro is present at least once

转载 作者:行者123 更新时间:2023-11-30 17:59:43 26 4
gpt4 key购买 nike

我正在编写一个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 。有什么建议吗?

最佳答案

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

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

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

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

当链接器看到-l可选时,它将使用该库中的对象来满足 undefined reference 。因此,如果您在 file1.ofile2.o 中使用该函数,它将被包含在内。

关于条件编译: compile once if macro is present at least once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11187005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com