Sye*_*nun 0 c++ macros include-guards c-preprocessor
假设我们有两个类,Foo和Bar.
在Foo.h中
#ifndef MYPROJ_FOO
#define MYPROJ_FOO
....
# endif
Run Code Online (Sandbox Code Playgroud)
在Bar.cpp中,我们还需要保护包括如
#ifndef MYPROJ_FOO
#include <Foo.h>
#endif
Run Code Online (Sandbox Code Playgroud)
还是简单#include 就足够了?如果我们已经有头球防守队员,那么对我来说似乎是多余的,但是我经常看到这样的练习,因此想知道我是否遗漏了什么.谢谢!
小智 5
从功能上讲,它没有任何区别.
旧代码可能正在使用它的原因是作为优化.这意味着预处理器可以避免Foo.h第二次读取,因此它可以更快地生成结果.
如今,即使预处理器第二次读取文件,其性能影响也应该足够小,不要打扰它.一些预处理器甚至可以自动检测标题保护,记住哪个标题保护与哪个宏相关联,并避免自己重新读取标题文件.
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |