我在一个.cpp文件(不是main函数所在的文件)里声明了一个结构体,然后定义一个该结构体的变量到这步都没问题,但是当我紧接着想给结构体变量赋值的时候就提示报错“此声明没有存贮类或类型说明符”
可是当我换一种写法:把结构体变量的定义写在一个函数里面就可以使用改变量去对操作结构体里的内容,这是什么原因呢?
这个问题和结构体没关系,在全局只能定义变量和写函数等等,但就是不能使用abs.arr_num和cin>>num;这样的执行语句。
你的问题涉及编译原理(大概),“堆”啥的,我目前也么有搞懂。
你只需要知道,你的结构体没有问题,你触及了C++的标准(语法?)
以下是我的试错代码(是错的,也报错,证明了不是你的结构体的问题)
#include <iostream> using namespace std; int num; cin>>num; int main() { }
非常感谢您的热心回复,看了您的描述之后我大概了解了自己错误的方向,我会往您说的这个方向去查阅相关内容,我的本意是想在一个单独的cpp文件中声明一个结构体再指定一个结构体变量,然后在main函数所在的文件再去使用指定的结构体变量访问结构体里的内容,刚才我试了一下直接把结构体定义在头文件里然后在要使用结构体的文件里包含该头文件就可以使用我定义的结构体了。一般头文件多用于变量声明而变量的定义什么的多数在源文件里所以在头文件里定义结构体给我的感觉怪怪的,但他既然达到了我的目的那暂时我也不去纠结太多,但是对于上面您指出的问题我会去进一步的了解,避免下次再踩坑,最后再一次感谢您的热心回复!
今天又发现了之前的变量的名字取的不对,abs本身在库里就是一个函数,我定义了abs的结构体变量可能与库里的函数有冲突什么的,现在我将结构体定义在头文件里然后随便在一个cpp文件里定义一个该结构体的变量然后再回到头文件中将前面定义的变量声明为extern的形式然后就可以在其它文件里随意调用了,看来以后给变量的取名要多注意一些了!!!
@qiu_bin: 满意的话,给个回答最佳呗