1
#pragma mark -…
从技术角度来说,任何以#pragma开头的代码都是一条编译器指令。具体来讲,是一个特定于程序或特定于编译器的指令,它们不一定适用于其他编译器环境。如果编译器不能识别该指令,则会将其忽略,但可能会生成一个警告。在我们的例子中,#pragma指令实际上是针对IDE的指令,而与编译器无关,它们告诉 Xcode的编译器,要在编辑器版面顶部的方法和函数弹出菜单中插入一条分隔线。第二条指令创建一个文本条目,其中包含该行剩余的内容,可以将该文本条目用作源代码中各组方法的描述性标题。
一些类(尤其是一些控制器类)可能很长,使用方法和函数弹出菜单便于代码导航。加入#pragma指令并对代码进行逻辑组织,可以使菜单变得更加有效。
【参考引用】https://blog.csdn.net/u013712343/article/details/82733707
2
#pragma指令可以用于实现相关的控制与扩展: 源码表控制, 结构压缩, 以及警告去除等等。
一些头文件中, 有#pragma once, 其实和#ifndef技巧等价, 可以避免所在的文件在一个单独编译中只包含一次。 比#ifndef的好处就是拥有较少的代码, 避免名称到碰撞。
例如下面:
grandparent.h
#pragma once
struct foo
{
int member;
};
parent.h
#include "grandparent.h"
child.c
#include "grandparent.h"
#include "parent.h"
另外, 使用#pragma pack(push(n))可以进行结构体的对齐设置, 参见之前写的关于struct包含的字节问题的博客。
【参考引用】https://blog.csdn.net/a130737/article/details/44540619?utm_source=blogxgwz2