gpt4 book ai didi

c - sizeof() 不被预处理器执行

转载 作者:太空狗 更新时间:2023-10-29 16:32:59 25 4
gpt4 key购买 nike

#if sizeof(int) != 4
/* do something */

#if 中使用 sizeof 不起作用,而在 #define 中却有效,为什么?

#define size(x) sizeof(x)/sizeof(x[0]) /*works*/

最佳答案

没有什么是邪恶的——一切都可能被滥用,或者在你的情况下被误解。 sizeof 运算符是一个编译器特性,但编译器特性对预处理器(在编译器参与之前运行)不可用,因此不能在 #if 预处理器中使用指令。

但是,当你说:

#define size(x) sizeof(x)/sizeof(x[0])

并使用它:

size(a)

预处理器执行交给编译器的文本替换:

sizeof(a)/sizeof(a[0])

关于c - sizeof() 不被预处理器执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081842/

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