【发布时间】:2012-10-31 14:55:07
【问题描述】:
http://en.wikipedia.org/wiki/Pragma_once
当所有这些编译器都支持 #pragma once 时,我还应该使用包含防护吗?
很多关于堆栈溢出的响应都说要同时使用两者来实现兼容性,但我不确定这是否仍然正确。
今天有哪些编译器不支持#pragma once?
我不确定这两种方法在被广泛采用之前是否只是一个建议,或者是否仍有充分的理由同时使用这两种方法。
仅使用#pragma once 会导致问题的任何示例?
【问题讨论】:
-
请记住,列出的编译器的旧版本可能不支持它,所以如果您正在制作一个开源程序,其源代码将被分发,那么编译指示可能不起作用。
-
这不仅仅是编译器的支持,还取决于环境的复杂程度。您是否相信编译器能够确定两个文件是否相同,包括所有网络挂载和符号链接?
-
还可以考虑辅助工具,例如索引器和分析器。它们后面可能没有完整的预处理器或解析器,就像编译器一样。
-
许多嵌入式系统使用旧的 RVCT(或 ADS)编译器。如果他们支持
#pragma once,我会感到非常惊讶。 -
@Leo RVCT 从(至少)2.0 支持一次#pragma
标签: c++ compiler-construction pragma include-guards