Questions tagged «pragma»

#pragma伪指令为每个编译器提供了一种特定于机器和操作系统的功能,同时又保持了与C和C ++语言的整体兼容性。


9
如何为几行代码禁用GCC警告
在Visual C ++中,可以使用#pragma warning (disable: ...)。我也发现在GCC中,您可以覆盖每个文件编译器的标志。我该如何针对“下一行”或使用GCC在代码区域周围使用push / pop语义呢?


8
是否有编译器提示GCC强制分支预测始终遵循某种方式?
对于Intel体系结构,是否有一种方法可以指示GCC编译器生成代码,该代码始终在我的代码中以特定方式强制执行分支预测?英特尔硬件是否还支持此功能?那其他编译器或硬件呢? 我会在C ++代码中使用此代码,因为我知道我希望快速运行的情况,并且即使在最近采用了另一个分支的情况下,也不必关心速度的降低。 for (;;) { if (normal) { // How to tell compiler to always branch predict true value? doSomethingNormal(); } else { exceptionalCase(); } } 作为对Evdzhan Mustafa的后续问题,提示是否可以仅在处理器第一次遇到指令时指定提示,所有后续分支预测均正常运行?


10
禁用单个警告错误
有没有办法用Visual Studio禁用cpp文件中的单个警告行? 例如,如果我捕获一个异常但不处理它,则会收到错误4101(未引用的局部变量)。有没有一种方法可以仅在该函数中忽略它,否则可以在编译单元中报告它?此刻,我将#pragma warning (disable : 4101)文件放在顶部,但是很明显,整个文件都将其关闭。

4
定义宏中的语法
有什么方法可以将pragma语句与其他语句一起嵌入宏中? 我正在尝试实现以下目标: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type 如果存在的话,我可以使用增强解决方案(节省波动)。

4
如何迅速使警告静音
我有一段代码会生成很多警告(不推荐使用的API) 使用clang *我可以做 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" ... #pragma clang diagnostic pop 但是,这并不迅速。 如何快速进行? 注意:我不想全局禁用警告,甚至不想禁用整个文件,而只是在源代码的特定部分禁用特定警告。 编辑:我似乎我的笔记不够清楚:我不希望条件编译(这是假定重复的建议答案)。我只想在不使用新API的情况下使警告静音。
98 swift  pragma  swift2 

4
有选择地仅对翻译单元的一部分禁用GCC警告吗?
与此MSVC预处理程序代码最接近的GCC是什么? #pragma warning( push ) // Save the current warning state. #pragma warning( disable : 4723 ) // C4723: potential divide by 0 // Code which would generate warning 4723. #pragma warning( pop ) // Restore warnings to previous state. 我们在通常包含的标头中有代码,我们不想生成特定的警告。但是,我们希望包含那些标题的文件继续生成该警告(如果项目启用了该警告)。

5
“ pragma”一词从何而来?
所以我知道什么是杂用语,它的用途是什么,但是单词本身的含义是什么?我已经在代码中使用了很多次,但我从未真正知道这个词的实际含义或代表什么。
83 c++  c  terminology  pragma 

6
为什么一次不自动假定#pragma?
告诉编译器只包含一次文件有什么意义?默认情况下是否有意义?甚至没有理由多次包含一个文件吗?为什么不只是假设呢?与特定的硬件有关吗?
81 c++  c  pragma 


7
是否使用#pragma警告推送/弹出来临时更改警告级别的正确方法?
有时很难编写完全不会发出警告的C ++代码。但是,启用警告是一个好主意。因此,通常有必要禁用某些特定构造周围的警告,并在所有其他代码段中启用警告。 到目前为止,我已经看到了两种方法。 第一个是使用#pragma warning( push )和#pragma warning( pop ): #pragma warning( push ) #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( pop ) 第二种是使用#pragma warning( default ): #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( default: ThatWarning ) 我在第二个变体中看到的问题是它丢弃了原始警告级别-警告可能在此之前已关闭,或者其警告级别可能已更改。使用default将丢弃这些更改。 第一种方法看起来很干净。有什么问题吗?有没有更好的方法可以达到相同目的?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.