![]() |
1
59
如果使用静态的,编译器将在二进制文件中只嵌入字符串的一个副本,并将指针传递给该字符串,从而产生更紧凑的二进制文件。如果使用define,每次使用时都会有一个单独的字符串副本存储在源中。持续的字符串合并将处理许多重复数据消除,但您无缘无故地使链接器工作更困难。 |
![]() |
2
14
见
"static const" vs "#define" vs "enum"
. 的主要优势
除此之外,
但这可能不是一个好的风格:)。 |
![]() |
3
4
在做了一些搜索之后(
this
问题/答案等)我认为重要的是,当你使用字符串文字时
因此,我认为(如果我错了,我道歉)上述答案中的这句话是错误的:
|
![]() |
4
4
实际上我也不推荐,你应该使用
h
m
我通常把它们放在申报文件中(比如
这些方法有一些不同之处:
静态和外部的可见性不同。值得注意的是,这两种方法都没有复制字符串(甚至没有
操作员
结论是:使用
|
![]() |
5
3
我使用
|
![]() |
6
3
使用γ定义: 无法调试标识符的值 使用define和其他宏是预处理器的工作, 当您首先点击build/run时,它将预处理源代码,它将处理所有宏(从符号开始)。 假设你创造了,
在代码中的两个地方使用了这个。
它将取代
“语言类型英语”
具有
记住,在此过程之前,编译器不在图片中。 在预处理完所有宏之后,编译器就会出现在图片中,它会得到这样的输入代码,
并编译它。 使用静态: 它尊重范围并且是类型安全的。 可以调试标识符的值 在编译过程中,如果找到编译器,
然后它将检查先前存储的同名变量, 如果是,它将只传递该变量的指针, 如果没有,它将创建该变量并传递它的指针,下一次它将只传递相同的指针。 因此,使用static,在作用域内只生成变量的一个副本。 |
![]() |
Martin sku · 在目标C中打印时间 3 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 3 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 7 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 7 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 7 年前 |