这是允许在C?

std*_*all 0 c syntax iar

我在C中写了以下这一行.我想知道该语言是否支持.它是这样的:

char * mode[7] = Config_Msg.DHCP ? "DHCP" : "Static";
Run Code Online (Sandbox Code Playgroud)

基本上我想在模式中插入"DHCP"或"STATIC"的字符串值,取决于Config_Msg.DHCP中的值.

当我在IAR中编译时,我收到此警告:

Warning[Pe520]: initialization with "{...}" expected for aggregate  
Run Code Online (Sandbox Code Playgroud)

这个警告意味着什么?

Wil*_*ell 6

警告意味着您的问题的答案是否定的.您正在做的事情可以在运行时完成,但它在初始化程序中无效.写吧:

char * mode;

mode = Config_Msg.DHCP ? "DHCP" : "Static";

经过仔细检查,这不是您警告的来源.您错误地将模式声明为7个指针的数组,因此编译器期望初始化表单:

char * mode[ 7 ] = { "one", "two", "three" };

(其余四个条目将初始化为全零).