这里是我的代码在gcc c99,其中有我的代码中的“空值”?“无效值不被忽略,因为它应该是”当使用gcc
int main(int argc, char **argv) {
char *s = "smth";
int r2 = ({ if (__builtin_types_compatible_p(__typeof__(s), char*)) { true; } else { false; }});
return (0);
};
更新
更糟的是,下面的代码有相同的错误
int main(int argc, char **argv) {
char *s = "smth";
int r2 = ({if (1) {1;} else {0;}});
return (0);
};
1)这是多么糟糕的原因。 2)你认为选择声明应该返回什么? - 无论如何,这不符合标准3)为什么不坚持标准并使用条件表达式 - 或者4)您根本不需要条件构造。 – Olaf