今天在编写代码时发现了一些使用结构体的问题,写下来做个记录。
我遇到的问题比较让人迷糊,在网上查了资料也没有查到,我写个简单的例子,如下:
typedef struct tagGuan
{
int m;
int i;
} guan;
int main()
{
int i =0;
i++;
static guan x = {1, 2};
return 0;
}
比如有如上代码在后缀为cpp的文件中能够很好的运行,但是当把文件后缀改为c问题就出现了。
系统在编译的时候会提示 在static guan x = {1, 2};这一行有{error C2143: 语法错误 : 缺少“;”(在“类型”的前面)}
思考许久,在网上查了不少资料未果,最后自己实验发现,当把main函数改为如下代码:
int main()
{
static guan x = {1, 2};
int i =0;
i++;
return 0;
}
程序就能正确运行。时候在函数中声明结构体变量的时候必须声明在函数中所有运算之前,否者就会出错。
后来想起来很久没用c了对c中的变量定义生疏了,在C语言中不同于C++所有的变量都必须首先声明,而且声明必须在所有运算之前,不能临时定义变量。