gpt4 book ai didi

objective-c - "macro"在 Objective-C 中是什么意思?

转载 作者:太空狗 更新时间:2023-10-30 03:21:24 24 4
gpt4 key购买 nike

我是iOS开发新手,只想知道Objective-C中宏的含义?

我发现“宏”与#define 一起使用,但仍然不明白它的含义。

http://www.saturngod.net/ios-macro-define-value-with-condition

最佳答案

是的,Larme 是对的。宏可以在多种语言中使用,它不是 objective-c 语言的特长。

宏是预处理器定义。这意味着在编译您的代码之前,预处理器会扫描您的代码,并且除其他外,在它看到您的宏名称的任何地方替换您的宏定义。它没有做任何比这更聪明的事情。

几乎是文字代码替换。例如-

假设您想要一个方法返回两个数字中的最大值。您编写一个宏来完成这个简单的任务:

#define MAX(x, y) x > y ? x : y

很简单吧?然后,您可以像这样在代码中使用宏:

int a = 1, b = 2;
int result = 3 + MAX(a, b);

编辑:

问题是预处理器在编译前将宏定义代入了代码,所以这是编译器看到的代码:

int a = 1, b = 2;
int result = 3 + a > b ? a : b;

C 运算顺序要求在应用三元运算符之前计算和 3 + a。您打算将 3 + 2 的值保存在结果中,但您先加上 3 + 1,然后测试总和是否大于 2,结果确实如此。因此结果等于 2,而不是您预期的 5。

所以你通过添加一些括号来解决问题并重试:

#define MAX(x, y) ((x) > (y) ? (x) : (y))

关于objective-c - "macro"在 Objective-C 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20837633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com