MSVC ++ 2008 Express Editon编译器可以做什么,不能做什么
||
考虑到以下示例,我一直想知道msvc ++ 2008编译器是否照顾同一个文件的多个标头包括:
main.cpp
#include \"header.h\"
#include \"header.h\"
编译器会多次还是仅一次包含此文件? (我知道我可以使用#ifndef \“技巧\”来防止这种情况的发生)
另外,如果我包含包含10个函数的\“ header.h \”,但我仅调用或使用2,它是否仍将包含全部10个或仅包含我需要的2个及其所有需求?
没有找到相关结果
已邀请:
5 个回复
镀建啼
把戏”。但这当然不是“把戏”。这是在编写C ++代码时处理这种情况的标准习惯用法,任何其他查看您的源文件的程序员都几乎可以肯定希望在其中的某个地方包含防护措施。 另一个利用VC ++功能(一个也可以在其他几个C ++工具箱中找到它的方式)以某种更容易键入的方式完成基本相同的操作。通过在头文件的顶部包括行“ 2”,您可以指示预处理器每个翻译单元仅包含一次头文件。与包括卫兵相比,这还有一些其他优点,但是它们在这里并不特别相关。 至于第二个问题,链接器将负责“优化”从未在代码中调用的函数。但这是编译的最后阶段,与
无关,正如我在上文中提到的那样,
是由预处理器处理的。
浅镁
靛取糕奖穿
编写头文件时,必须始终确保以这种方式对其进行保护。
梦话快家腹
提孺局缎