gpt4 book ai didi

c - 有没有办法检测,C 文件被直接编译成可执行文件?

转载 作者:太空狗 更新时间:2023-10-29 15:23:31 25 4
gpt4 key购买 nike

我想在一些 C 文件中包含一个测试 main 函数——允许它们被编译成独立的小程序来独立测试各种函数。

但我不希望这些多个main-函数包含在真正的(大)可执行文件/库中。

显然,我可以使用自己的 define,例如 -DINCLUDE_TEST_MAIN,但我突然想到,clang 可能已经在自己告诉我了。不知何故......

那么,编译后的代码有什么方法可以检测到它是直接编译成可执行文件还是生成目标文件(使用 -c 标志)?

解决方案不一定是通用的——我很确定,通用的解决方案不存在——我的主要编译器是 clang...

最佳答案

我没有看到比 -DINCLUDE_TEST_MAIN 更好的解决方案。如果不需要,您可能可以创建一些奇特的命令行,将 main 从目标文件中删除,但我认为 -D 是最好的方法。

我真的不明白你的意思 » 但我突然想到,clang 可能已经自己告诉我了。不知何故......« - 如果你害怕名字冲突,而不是只取一个名字,clang 肯定不会使用,比如 -DMIKHAIL_T_INCLUDE_TEST_MAIN;如果这不是您的意思,那么您应该澄清这一点。

或者,除了 stuff.c 之外,您还可以创建 stuff.main.c 并像这样测试编译:

gcc stuff.c stuff.main.c -o stuff.test

(有效地将 main 移出文件。)

关于c - 有没有办法检测,C 文件被直接编译成可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065683/

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