#pragma warning
不能被预处理,否则编译器将永远看不到它。 - OrangeDogpragma
似乎是一种影响编译器行为的方式,但与编译器标志不同的是,该行为可以局部于代码中。例如,对于一个结构类型进行打包,而对另一个结构类型不进行打包。 - Paul Ogilvie#pragma warning
和#pragma error
,则在预处理阶段进行处理,该消息将以编译器诊断的相同格式输出给用户,但无需通知编译器。需要注意的是,#pragma error
应该使用非零状态码停止编译过程。 - chqrlieSTDC
的pragma
指令会执行“特定于编译器”的操作(实现定义)。带有STDC
和FP_CONTRACT
、FENV_ACCESS
或CX_LIMITED_RANGE
的pragma
指令会执行标准定义的操作。 - Eric Postpischil#pragma once
需要由预处理器处理,因为它的工作是使用预处理指令#include
确保一个文件在给定位置只被包含一次,从而替代include guards。另一方面,#pragma pack
需要无损地通过预处理器,因为它是一个关于如何在内存中布局数据的编译器指令。
#pragma once
指令。 - interjay