标签: pragma

Xcode - 使用#pragma mark

我很确定这不是重复的.你用#pragma mark吗?我见过多种方式,这是正确的吗?

#pragma mark -
#pragma mark === Actions ===
#pragma mark -

#pragma mark -
#pragma mark === Actions ===

#pragma mark - === Actions ===

#pragma mark Actions
Run Code Online (Sandbox Code Playgroud)

你这样做的方式是什么?你怎么建议把它分开?您通常将您的部分命名为什么,例如视图控制器?

xcode pragma

22
推荐指数
1
解决办法
2万
查看次数

您使用#pragma编写的代码有什么用?

我从来没有理解#pragma once什么时候#ifndef #define #endif总是有效的需要.

我已经看到了#pragma comment与其他文件链接的用法,但使用IDE可以更轻松地设置编译器设置.

有哪些其他用法#pragma是有用的,但并不广为人知?

编辑:

只是#pragma指令列表之后.也许我应该再多说一下这个问题:

你和你一起写的代码#pragma有用吗?

.

答案一目了然:

感谢所有回答和/或评论的人.以下是我发现有用的一些输入的摘要:

  • Jason建议使用#pragma once#ifndef #define #endif允许更快地编译大型系统.史蒂夫跳进来支持这一点.
  • 280Z28领先并提到#pragma onceMSVC首选,而GCC编译器优化#ifndef #define #endif.因此,应该使用其中之一,而不是两者.
  • Jason还提到#pragma pack了二进制兼容性,而Clifford则反对这一点,因为可移植性和字节序可能存在问题.Evan提供了一个示例代码,Dennis告知大多数编译器会强制执行填充以进行对齐.
  • sblom建议#pragma warning用来隔离真正的问题,并禁用已经审查过的警告.
  • Evan建议#pragma comment(lib, header)在不重新设置IDE的情况下轻松移植项目.当然,这不太便携.
  • sbi #pragma message为VC用户提供了一个很好的技巧来输出带有行号信息的消息.詹姆斯更进一步,允许errorwarning匹配MSVC的消息,并将适当显示,如错误列表.
  • Chris提供#pragma region了能够在MSVC中使用自定义消息折叠代码.

哇,等等,如果我想发布使用#pragmas除非必要,该怎么办?

  • 克利福德从另一个角度发布了关于使用的观点#pragma.荣誉.

如果SOers感觉到发布答案的冲动,我会在此列表中添加更多内容.感谢大家!

c++ compiler-construction pragma

22
推荐指数
4
解决办法
7603
查看次数

在gcc中,如何将-fpermissive警告静音?

我包含来自第三方库的文件,该文件引发了一个错误,可以将其降级为警告-fpermissive.但是因为我不想用这些警告"污染"我的编译日志,所以我想完全禁用这些消息.

到目前为止,我在包含文件时-fpermissive使用诊断编译指示设置选项; 就像是:

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"

#include <third-party-file.h>

#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

由于gcc通常提供-f标志的"正面"和"负面"版本,我想忽略了"不允许"的功能:

#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>
Run Code Online (Sandbox Code Playgroud)

但似乎没有-fpermissive标志的"负面"版本(我正在使用gcc 4.6.3;但即使版本4.7.0 也没有它).

我有机会模仿这种行为吗?谢谢!

c++ gcc warnings pragma

22
推荐指数
2
解决办法
4万
查看次数

#pragma mark没有显示在Xcode 4.0中的方法中

在Xcode版本4.0中,我注意到方法中的#pragma标记不再显示在跳转栏中.唯一显示的#pragma标记是方法之间的标记.

我正在使用这些#pragma标记,以便快速组织和获取显示在我的tableviews的不同部分中的信息,我真的想要恢复该功能.

有谁知道如何让他们再次出现?

pragma xcode4

21
推荐指数
2
解决办法
4643
查看次数

在GCC中抑制-Wunknown-pragmas警告

我试图忽略来自某些第三方头文件的警告,如下所示:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
#pragma GCC diagnostic ignored "-Wreorder"

#include <some_3rd_party_header.h>

#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

这种方法似乎总体上起作用,但不适用于未知的pragma警告(我仍然得到它们).

为什么它适用于其他警告但不适用于此警告?谁能证实这种行为?

我使用的是G ++(版本4.7.1)与-Wall-std=c++0xDebian的下.

gcc warnings pragma suppress-warnings

21
推荐指数
1
解决办法
9742
查看次数

#pragma mark不列出第一个组名

#pragma mark用于在某些类别下对我的方法进行分组.但问题是Xcode 4我的第一类是不显示.

我的代码看起来像:

@interface MyClass : NSObject

#pragma mark -
#pragma mark Category 1

//Some method declaration

#pragma mark -
#pragma mark Category 2

//Some method declaration

#pragma mark -
#pragma mark Category 3

//Some method declaration
@end
Run Code Online (Sandbox Code Playgroud)

但是当我检查Xcode它时它只显示类别2和类别3.类别1没有列在那里,请检查图像 实用主义问题

我的代码中是否有任何问题或者是否存在错误XCode

xcode pragma ios xcode4

21
推荐指数
2
解决办法
2037
查看次数

pragma指令的范围是什么?

pragma指令的范围是什么?例如,如果我#pragma warning(disable: 4996)在一个包含在不同文件B中的头文件A中说,那么是否也会禁用B内的所有警告?或者我应该再次在文件A的末尾启用警告?

c++ scope pragma header-files visual-studio-2008

20
推荐指数
2
解决办法
7396
查看次数

如何使用#pragma clang diagnostics

我知道#pragma clang diagnostics可以用来忽略clang生成的一些警告.但我不知道如何正确使用它.

例如,对于未使用的变量警告,我们可以避免警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"

int number;

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何为#pragma clang诊断忽略得到正确的参数(这里是"-Wunused-variable")

有没有办法用xcode为特定警告提供这种警告名称?

xcode diagnostics pragma clang

20
推荐指数
2
解决办法
2万
查看次数

人们如何处理警告C4793:'some_function':编译为本机的函数?

我正在使用OpenCV库,并且"warning C4793: 'anonymous namespace'::CV_XADD' : function compiled as native"如果我的C++项目是使用CLR支持编译的,则会生成其中一个头文件cxoperations.hpp .我可以通过包围这样的OpenCV标头来阻止警告:

#pragma managed(push,off)
#include <cv.h>
#pragma managed(pop)
Run Code Online (Sandbox Code Playgroud)

但实际使用OpenCV的项目不是使用CLR支持编译的,它是一个本机C++静态库.具有CLR支持并且在没有pragma语句的情况下生成此警告的项目只使用此静态库.所以我有点惊讶的是,根本没有创建警告,特别是考虑到整个静态库没有使用CLR支持进行编译,但只有这一个标题会导致问题.

因此,这个解决方案对我来说似乎不太理想.这是你如何处理这个警告,还是你可以推荐一个更好的做法?

warnings opencv c++-cli pragma visual-studio

19
推荐指数
1
解决办法
1万
查看次数

如何为Clang定义具有多个编译指示的宏?

我想添加一些宏来缓解(un)在我们内部弃用的例程周围设置一个特定的警告.

我想转此:

#pragma clang diagnostic push
#pragma clang diagnostic warning "-Wdeprecated-declarations"

void Foo() __attribute__((deprecated("Warning: deprecated routine")))

#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

进入这个:

MY_DEPRECATED_BEGIN

void Foo() MY_DEPRECATED

MY_DEPRECATED_END
Run Code Online (Sandbox Code Playgroud)

MY_DEPRECATED_BEGIN宏给我的麻烦,我必须指定2个在一个宏编译指示.可以这样做吗?

(仅使用MY_DEPRECATED宏实现相同效果的解决方案的奖励积分!)

macros pragma clang

19
推荐指数
2
解决办法
3357
查看次数