gpt4 book ai didi

c - 在 C 宏中使用 if else

转载 作者:行者123 更新时间:2023-12-02 06:50:22 26 4
gpt4 key购买 nike

我正在尝试定义以下宏:

#define UTF8_2B(c) if((0xc0 & c) == 0xc0){return 1;}

但是我遇到了错误:

expected expression before ‘if’

宏是这样调用的:

int i = UTF8_2B(c);

其中 c 是从文件中读取的无符号字符。

为什么会这样?你能不能在宏中使用 if else 语句?另外,我读到在你的宏中使用分号不是一个好主意,但我不明白为什么。我是 c 语言的新手,所以答案越全面越好。

最佳答案

C(和 C++)预处理器宏本质上是带有参数替换的“复制粘贴”。所以你的代码变成:

int i = if((0xc0 & c) == 0xc0){return 1;}

这是无效的语法。

关于c - 在 C 宏中使用 if else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266097/

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