【发布时间】:2014-03-17 14:42:36
【问题描述】:
使用#pragma optimize 的代码的可移植性如何?大多数编译器是否支持它?对这个#pragma 的支持有多完善?
【问题讨论】:
-
我可以告诉你PS3版的gcc不支持这个。
-
你能举个例子说明你将如何在其他可移植代码中使用它吗?由于其他原因,我只见过在特定于编译器的代码中使用这种编译指示。
-
gcc 4.4+ 有
#pragma GCC optimize。您通常可以假设 pragma 是不可移植的。 -
ANSI 标准中指定的“#pragma”命令具有任意实现定义的效果。在 GNU C 预处理器中,'#pragma' 首先尝试运行游戏'rogue';如果失败,它会尝试运行游戏“hack”;如果失败,它会尝试运行显示河内塔的 GNU Emacs;如果失败,它会报告一个致命错误。在任何情况下,预处理都不会继续。 -- Richard M. Stallman,GNU C 预处理器,1.34 版 ---- #pragma 完全是关于编译器定义的行为,即,非便携式。
-
@sharptooth:只有在下一次代码审查之前,他才会(希望)看到他的方式的错误,就像那个人使用
#pragma once而不是正确的标题保护一样。
标签: c++ c compiler-construction portability pragma