Cocoa:对代码中的#define 感到困惑?

发布于 2024-07-21 07:18:40 字数 470 浏览 1 评论 0原文

我正在浏览从互联网上下载的一些代码(在这里

我对这行代码感到困惑......它到底在做什么?

#define N_RANDOM_WORDS (sizeof(randomWords)/sizeof(NSString *))

这是“randomWords”数组:

static NSString *randomWords[] = {
@"Hello",
@"World",
@"Some",
@"Random",
@"Words",
@"Blarg",
@"Poop",
@"Something",
@"Zoom zoom",
@"Beeeep",
};

I was going through some code that I downloaded off the internet (Got it here)

I am confused with this line of code... What exactly is it doing?

#define N_RANDOM_WORDS (sizeof(randomWords)/sizeof(NSString *))

Here is the array of "randomWords":

static NSString *randomWords[] = {
@"Hello",
@"World",
@"Some",
@"Random",
@"Words",
@"Blarg",
@"Poop",
@"Something",
@"Zoom zoom",
@"Beeeep",
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

国际总奸 2024-07-28 07:18:40

sizeof(randomWords) 给出数组占用的字节数。 数组的每个元素都是一个 NSString 指针。 sizeof(NSString*) 给出每个指针的大小。 因此,将总大小除以每个元素的大小即可得出元素的数量。

N_RANDOM_WORDS 是一个正在定义的宏。 无论在何处使用,表达式 sizeof(randomWords)/sizeof(NSString*) 都将由预处理器插入其位置。 这通常是在 C 或 Objective C 中定义常量的方式。

有关 C(和 Objective C)中宏的更多信息,这是一个很好的教程

sizeof(randomWords) gives the number of bytes taken up by the array. Each element of the array is an NSString pointer. sizeof(NSString*) gives the size of each pointer. So dividing the total size by the size of each element gives the number of elements.

N_RANDOM_WORDS is a macro being defined. Wherever it is used, the expression sizeof(randomWords)/sizeof(NSString*) will be inserted in its place by the preprocessor. This is usually how constants are defined in C or Objective C.

For more information on macros in C (and Objective C), here's a nice tutorial.

聆听风音 2024-07-28 07:18:40

一个 NSString* 占用 sizeof(NSString*) 字节。 randomWords 的大小为 N * sizeof(NSString)。 因此,求解 N,您将得到 N = sizeof(randomWords)/sizeof(NSString *)

One NSString* takes sizeof(NSString*) bytes. The size of randomWords is N * sizeof(NSString). So solving for N, you get N = sizeof(randomWords)/sizeof(NSString *).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文