error C3646: “name”: 未知重写说明符
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
有一个例子:
文件1:ReadData.h
- #pragma once
-
- int fun(int i, int j);
文件2:ReadData.cpp
- #include
- #include "ReadData.h"
- using namespace std;
-
- int fun(int i, int j)
- {
- return i + j;
- }
文件3:run_main.cpp
- #include
- #include "ReadData.h"
- using namespace std;
-
- int main()
- {
- cout << "输出结果如下:" << endl;
- cout << fun(3, 4) << endl;
- return 0;
- }
运行一下,一切都很正常。

但是,当我在头文件1中添加一个结构体时
文件1修改:ReadData.h
- #pragma once
-
- struct _STU
- {
- string name;
- int age;
- };
-
- int fun(int i, int j);
运行时就出错了。。
当我把文件2和3的头文件调整一下后
文件2:ReadData.cpp
- #include
- using namespace std; //这两行换下顺序
- #include "ReadData.h" //这两行换下顺序
-
- int fun(int i, int j)
- {
- return i + j;
- }
文件3:run_main.cpp
- #include
- using namespace std; //这两行换下顺序
- #include "ReadData.h" //这两行换下顺序
-
- int main()
- {
- cout << "输出结果如下:" << endl;
- cout << fun(3, 4) << endl;
- return 0;
- }

又可以正常运行了。
要理解添加头文件其实是把头文件的内容展开放在头文件include的地方
这里头文件h中添加了一个结构体,结构体中用到了string类型
而这个类型需要std支持,当头文件在#include
之前时,是找不到string类型的 所以报错
假如头文件在#include
之后,using namespace std;之前的话,上述代码也会报错,可以将string --> std::string这样修改,不会报错了就。 一定要注意加载的先后顺序