【发布时间】:2017-05-08 15:01:00
【问题描述】:
谁能解释一下这个宏的作用和工作原理?
#define STRCMP(a, R, b) (strcmp(a, b) R 0)
在代码中它被用作:if(STRCMP(some_string, "==", " blabla"))
宏中的R 0 是什么意思? if 语句中的宏在做什么?
【问题讨论】:
-
手动展开就可以了。
-
"=="-->==? -
我不希望
STRCMP(some_string, "==", " blabla")正确编译。我很惊讶它不是STRCMP(some_string, ==, " blabla")。 -
正如 BLUEPIXY 指出的那样,由于
==周围有双引号,因此无法编译。需要去掉双引号。但这是一个令人困惑的宏。 -
@RichardChambers - 再次证明一个可以做某事并不意味着一个应该做某事。 :-)
标签: c string if-statement macros