无论如何我是否可以在没有预处理器指令的条件基础上初始化成员?

use*_*608 3 c struct

我有一系列结构.在初始化期间,我需要在条件基础上初始化.说

struct struct_name[arraySize] = { {1, 'a'}, {2, 'b'},
#if condition
    {3, 'c'}
#else
    {4, 'd'}
#endif
    };
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我使用预处理器指令控制初始化.无论如何,我可以在不使用预处理器指令的情况下进行此条件编译吗?

Wea*_*ane 5

是的,使用三元运算符,就像这样.

#include <stdio.h>

struct struc {
    int number;
    char letter;
    };

int main()
{
    int condition = 1;
    struct struc array[] = {{1, 'a'}, {2, 'b'}, {condition ? 3:4, condition ? 'c':'d'}};
    return 0;
}
Run Code Online (Sandbox Code Playgroud)