我正在写C89,C90,Ansi-C代码。我的一个函数需要一个结构体作为参数。我想用这个结构的初始化来调用函数,而不是先创建一个结构,然后再把它传递给函数。
这里有一些工作的片段。
typedef struct {
char* EventName;
char* Message;
} Event;
Event myEvent = {
.EventName = "infomessage",
.Message = "Testmessage"
};
Notify(myEvent);
这是我想写的,但不起作用:
Notify({.EventName = "infomessage", .Message = "Testmessage"});
甚至更好
Notify({"infomessage", "Testmessage"});
编辑:LabCVI使用ISO 9899:1990标准。
2条答案
按热度按时间guicsvcw1#
使用复合文字
(Event){"infomessage", "Testmessage"}
,即oprakyz72#
我不认为你可以,因为这将是混合声明和代码。还有
警告:复合文字是C99特有的特性[-Wc 99-extensions]
在C90中,一种方法是给予它一个临时名称,如:
请注意较旧的
{ data1, data2 }
初始化方法。如果担心作用域,也可以将其括在大括号中,并在顶部初始化。