MS Visual Studio 2010 c++预处理器-如果函数在宏中定义并在其他地方调用,当未定义时是否会有任何开
MS Visual Studio 2010 C++ Preprocessor - If function is defined in macro with calls elsewhere, is there any overhead hit when undefined
我有一个简短的问题,我确信有人问过这个问题,所以如果是重复的,我很抱歉。我试着搜索google和stackoverflow,但结果与我的问题无关。
的场景:
我有一个Visual Studio 2010项目配置,它定义了一个名为DBG的预处理器。在代码中,我有一个#ifdef DBG节,它在头文件中声明了一个函数签名(我们称之为writeToFile),并在cpp文件中的另一个#ifdef DBG/#endif节中定义了该函数。整个项目的其余部分都是对writeToFile的调用。
问题:
当项目在不同的配置(不定义DBG的配置)下编译时,编译器如何处理?我知道#ifdef/endif指令中的部分几乎被忽略了,但是对writeToFile的所有函数调用会发生什么?编译器也会忽略这些吗?或者在运行时,这些调用实际发生并且什么都不做吗?
Thanks in advance
我怀疑编译器应该抛出一个错误(未定义的函数writeToFile()
)。但是,您应该能够通过指定#else
节来解决这个问题,该节使用空体定义了相同的函数。ie .
#ifdef DBG
void fun() { cout << "hello"; }
#else
void fun() { };
#endif //DBG
编辑:我个人只会定义你想要的函数,并把#ifdef/#endif
块在它的体内。
相关文章:
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 调用方如何知道 VARIANT 中何时有十进制?
- 从返回 std::optional of std::vector 的函数中获取结果到调用方
- "co_yield"是否可以在恢复协程时从调用方返回值?
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 通过 C++ 中的指针将子对象值传递给被调用方类
- 是否允许调用方对我的 Builder 类使用任何指针类型(包括智能指针)?
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 具有不同类型的可选参数的调用方函数
- 将非左值作为常量引用参数传递.临时是在本地作用域还是在调用方作用域中创建的?
- CPP 异常获取抛出调用方的详细信息
- 识别 capnproto RPC 中的调用方
- 如何防止方法的调用方将结果存储在C++中
- 被调用方如何知道参数是通过寄存器而不是堆栈传递的
- 谷歌测试有没有办法为被调用函数中的断言生成调用方行号
- 传递类 by-value 时,调用方或被调用方是否调用析构函数
- JNI_OnLoad获取 Java 调用方包 + 类名
- C++函数中引发异常并在调用方中捕获它
- 访问函数的调用方类型