gpt4 book ai didi

c++ - #ifdef 在程序中 main() 之前的目的

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:34 25 4
gpt4 key购买 nike

下面#ifdef 的目的是什么?为什么它允许我在调试程序时逐步执行我的程序(事件解决方案配置 = 调试),但在事件解决方案配置 = 发布时或在构建解决方案和事件解决方案配置 = 发布时却不允许?

#ifdef RUN
int main(int argc, char* argv[])
{
Some functions

}
#endif

我正在使用其他人的遗留代码,我知道我可以删除它并且它会正常运行,但我想了解为什么以前的编码人员首先将这些预处理器指令放在这里。

最佳答案

回想一下,在链接的 C 程序中只能有一个 main() 函数。

因此,如果打算将其用作 代码,则需要关闭 main(在预编译中删除)。

如果要独立运行,应该保留main。

它可以用于文件的测试用例。它也可能成为一个独立的服务器,其中库代码基本上仍将作为库代码运行,只是通过 IPC 而不是直接链接。

对我来说,这是一种不好的做法,反射(reflect)了构建中的一个问题,C 程序员比构建工程师更能干,后者不知道如何正确地分离组件。需要重构。

在删除之前我会考虑以下事项:

  • 它们是测试用例吗? (如果是,重构为适当的测试代码)
  • RUN 是否真的在系统的任何地方打开过?如果是,地点和原因;如果不安全,可能移除
  • 考虑将 #ifdef RUN #error 作为中断构建的方式,如果它让您惊讶地发现标志有时被定义,或者 #ifndef 反之亦然。注意我说的是“考虑”;请先了解破坏构建的含义。

关于c++ - #ifdef 在程序中 main() 之前的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26640759/

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