我从来不明白#pragma once
什么时候#ifndef #define #endif
总是有效的需要。
我已经看到了#pragma comment
与其他文件链接的用法,但是使用 IDE 设置编译器设置更容易。
还有哪些其他#pragma
有用但不广为人知的用法?
编辑:
我不只是在#pragma 指令列表之后。也许我应该重新表述一下这个问题:
你用什么代码写的,#pragma
你觉得有用?
.
答案一目了然:
感谢所有回答和/或评论的人。以下是我认为有用的一些输入的摘要:
- Jason 建议使用
#pragma once
or#ifndef #define #endif
将允许在大型系统上更快地编译。史蒂夫加入并支持这一点。 - 280Z28 领先并提到它
#pragma once
是 MSVC 的首选,而 GCC 编译器针对#ifndef #define #endif
. 因此,一个人应该使用其中之一,而不是两者。 - Jason 还提到
#pragma pack
了二进制兼容性,而 Clifford 反对这一点,因为可能存在可移植性和字节序问题。Evan 提供了一个示例代码,Dennis 告知大多数编译器将强制填充对齐。 - sblom 建议使用
#pragma warning
来隔离真正的问题,并禁用已经审查过的警告。 - Evan 建议
#pragma comment(lib, header)
在项目之间轻松移植,而无需再次重新设置 IDE。当然,这不是太便携。 - sbi
#pragma message
为 VC 用户提供了一个绝妙的技巧来输出带有行号信息的消息。James 更进一步,允许error
或warning
匹配 MSVC 的消息,并将适当地显示,例如错误列表。 - Chris 提供
#pragma region
了能够在 MSVC 中使用自定义消息折叠代码。
哇,等一下,如果我想发布关于不使用#pragmas 的帖子,除非必要,该怎么办?
- 从另一个角度看克利福贴一下不要用
#pragma
。荣誉。
如果 SOers 有发布答案的冲动,我将在此列表中添加更多内容。感谢大家!