为什么三目运算符不能用来初始化结构类型,而可以用来初始化像int这样的基类型?
示例代码:
#include <stdio.h>
#define ODD 1
int main(int argc, const char *argv[])
{
static struct pair_str {
int first;
int second;
} pair = ( ODD ) ? {1,3} : {2,4}; // ERROR
printf("pair %d %d\n", pair.first, pair.second);
int number = (ODD) ? 1 :2; // FINE
return 0;
编译器错误:
/home/giuseppe/struct.c: In function ‘main’:
/home/giuseppe/struct.c:12:23: error: expected expression before ‘{’ token
/home/giuseppe/struct.c:12:29: error: expected expression before ‘:’ token
最佳答案
当然,使用 C99 复合文字:
pair = odd ? (struct pair_str){ 1, 3 } : (struct pair_str){ 2, 4 };
关于c - 使用三元运算符初始化结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896743/