【发布时间】:2011-06-01 14:12:03
【问题描述】:
标题说明了一切。 #pragma once 是否已针对 C++0x 进行了标准化?我不知道任何编译器不提供它的实现,几乎总是具有相同的语义和名称。
【问题讨论】:
-
“几乎”?您可以在不同的编译器中使用它吗?或者,你还知道哪些其他名字? (不清楚“几乎”适用于哪一个,或两者兼而有之?)
标签: c++ c++11 c-preprocessor pragma
标题说明了一切。 #pragma once 是否已针对 C++0x 进行了标准化?我不知道任何编译器不提供它的实现,几乎总是具有相同的语义和名称。
【问题讨论】:
标签: c++ c++11 c-preprocessor pragma
所有#pragma 指令都会导致实现以实现定义的方式运行。
这在 C++03 和最新的 C++0x 草案 (n3225.pdf) 之间没有改变。包括警卫是便携式替代品。
【讨论】:
#pragma once 可能会导致问题,但我想知道 - 为什么不考虑使用用户指定 ID 的其他替代方案,例如 #pragma once ID?还是只有我对那些复制粘贴的 ifdef-define-endif 行感到厌恶?..
Sun C++ 编译器 (Solaris) 没有实现它。不,它不在 C++0x 草案中。
【讨论】:
使用#ifdef 实现也很简单。新版本的指导原则是什么?实现您可能想要的一切和厨房水槽,还是只为您提供最少的工具来自己实现?
【讨论】:
#pragma once 一样,并且已被证明是有用的。关键字等效标准化会有所帮助。