我想知道用C90初始化这个结构的最佳方式是什么,同时仍然保持整洁。C90:我如何在没有C99扩展的情况下在C中全局初始化这个结构
在我的头文件,称它为test.h,我有以下结构定义:
struct s_test_cfg{
char *a[3];
char *b[3];
char *c[3];
}
然后我把它声明为一个外部的结构,这样我可以在.c文件全球初始化:
extern struct s_test_cfg test_cfg;
在我的.c文件
现在,我希望能够宣布这样的全球性(显然就是我要写在C90不支持):
struct s_test_cfg test_cfg =
{ .a = {"a", "b", "c"},\
.b = {"d", "e", "f"},\
.c = {"g", "h", "i"} };
这显然使它对你想要做的事情非常整洁透明。我怎么能初始化我的C文件中的全局结构,它也像这个语法一样干净?谢谢。
你使用什么编译器? – osgx
GCC,但我们想保留它C90,因为项目中的其他内容都是为了兼容C90而编写的。 – Jack
在我们的项目中,我们甚至转移到gcc-only扩展(有些仅在gcc> = 4.5),因为使用其他编译器的可能性非常低。 – osgx