我熟悉#pragma mark在Objective-C/Xcode/iOS开发中的应用,它有助于找到代码的不同部分。
但是,我想知道除了'mark'之外是否还有其他关键字可以使用。比如说,能否使用#pragma somethingelse?谢谢!
我熟悉#pragma mark在Objective-C/Xcode/iOS开发中的应用,它有助于找到代码的不同部分。
但是,我想知道除了'mark'之外是否还有其他关键字可以使用。比如说,能否使用#pragma somethingelse?谢谢!
首先,一些示例:
您可以控制诊断:
http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas
来自同一链接:
clang支持Microsoft的 "
#pragma pack
" 功能,用于控制记录布局。GCC也包含此功能的支持,但是在MSVC和GCC不兼容的情况下,clang遵循MSVC定义。clang支持Microsoft的
#pragma comment(lib, "foo.lib")
功能,用于自动链接指定库。目前,此功能仅适用于Visual C++链接器。clang支持Microsoft的
#pragma comment(linker, "/flag:foo")
功能,用于向COFF对象文件添加链接器标志。用户负责确保链接器理解这些标志。
该列表中的第二个和第三个不适用于您的iOS代码。
维基百科 [链接] 表示,clang也支持 #pragma once
。
最后,这是一个链接到 clang API文档,用于处理pragma
代码。您可以从那里浏览以查看其他所有内容。特别是,TokenKinds.def描述了所有接受的标记,因此可能是完整的:
#pragma unused
#pragma GCC visibility [push/pop]
#pragma pack [value/show/push/pop/etc/etc/etc]
#pragma clang __debug parser_crash
#pragma clang __debug captured
#pragma ms_struct [on/off]
#pragma align [native/natural/mac68k/power/reset]
#pragma weak [identifier]
#pragma weak [identifier = identifier] // alias
#pragma redefine_extname [identifier identifier]
#pragma STDC FP_CONTRACT
#pragma OPENCL EXTENSION
#pragma omp [...]
#pragma detect_mismatch
#pragma comment
解析代码位于ParsePragma.cpp
中,似乎表明并非所有的都已经实现,即使前端接受了它们。
是的。它经常用于实现定义的指令,但有一些是在C中定义的。
6.10.6 Pragma指令语义1Carl Norum的回答很好地涵盖了实现定义指令的示例。要获取完整列表,您应该参考编译器的文档。
// FIXME:需要修复的内容
和// TODO:需要处理的事项
#pragma once
。 - Popeye#pragma clang diagnostic ...
。 - Wain#pragma clang diagnostic ignored
的答案,这对于https://dev59.com/NmYq5IYBdhLWcg3wfgrd#14444603非常有用。 - Popeye