Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS VisualStudio 2010 C++预处理器——如果函数在宏中用其他地方的调用定义,则在未定义时是否有任何开销命中_C++_Visual Studio 2010 - Fatal编程技术网

MS VisualStudio 2010 C++预处理器——如果函数在宏中用其他地方的调用定义,则在未定义时是否有任何开销命中

MS VisualStudio 2010 C++预处理器——如果函数在宏中用其他地方的调用定义,则在未定义时是否有任何开销命中,c++,visual-studio-2010,C++,Visual Studio 2010,我有一个简短的问题,我肯定有人问过我,所以如果是重复的,我向你道歉。我尝试搜索google和stackoverflow,但结果与我的问题无关 情景: 我有一个VisualStudio2010项目配置,它定义了一个名为DBG的预处理器。 在代码中,我有一个ifdef DBG部分,它在头文件中声明了一个函数签名,我们称之为writeToFile,并在cpp文件的另一个ifdef DBG/endif部分中定义该函数。 整个项目的其余部分都是对writeToFile的调用 问题是: 当项目在一个不定义D

我有一个简短的问题,我肯定有人问过我,所以如果是重复的,我向你道歉。我尝试搜索google和stackoverflow,但结果与我的问题无关

情景:

我有一个VisualStudio2010项目配置,它定义了一个名为DBG的预处理器。 在代码中,我有一个ifdef DBG部分,它在头文件中声明了一个函数签名,我们称之为writeToFile,并在cpp文件的另一个ifdef DBG/endif部分中定义该函数。 整个项目的其余部分都是对writeToFile的调用

问题是:

当项目在一个不定义DBG的不同配置下编译时,编译器是如何处理的?我知道ifdef/endif指令中的部分几乎被忽略了,但是对writeToFile的所有函数调用会发生什么情况呢?编译器也会忽略这些吗?或者在运行时,这些调用是否实际发生而不执行任何操作


提前感谢

我怀疑编译器应该在未定义的函数writeToFile中抛出一个错误。但您应该能够通过指定else节来解决这个问题,该节定义了具有空主体的相同函数。即

#ifdef DBG
  void fun() { cout << "hello"; }
#else
  void fun() { };
#endif //DBG
编辑:
我个人只想定义您想要的函数,并将ifdef/endif块放在它的主体中。

奇怪的是,编译器没有抛出错误,所以我想知道编译器是如何处理它的。。。我确实在ifdef/endif中定义了函数…您可以使用Debugger进入函数内部吗?是否有可能存在另一个同名函数?不幸的是,这是另一个进程的插件dll,我无法控制,调试器无法工作。这就是为什么我在调试项目中首先记录到文件时就有这个条件函数。我不认为还有其他函数具有相同的名称,事实上,我可以更改函数名称,同样的事情也会发生……请参阅您最喜欢的C语言书,关于预处理器的工作方式,有很多,K&R很瘦。ifdef中任何不匹配的文本都将被完全删除。在编译器看到源代码之前。是的,我知道。我的问题是,当没有匹配项时,ifdef/endif函数调用有条件定义的函数时,ifdef/endif函数之外的代码会发生什么情况。显然,您应该期待以下情况之一:一声巨响,b机器冒出滚滚白烟,c错误列表窗口中的错误消息。最有可能是c。如下所述,没有错误或问题。我这样做已经两年了。我只是想知道今天引擎盖下发生了什么。。。