WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图相关的知识,希望对你有一定的参考价值。

在你那个出错的cpp 靠前面的地方加上对A的声明
比如:
#include "test.h"

extern ThisTest A;
参考技术A 这个问题很简单。修改一下#include "Test.h"的位置就行了。

警告信息已经提示出来了:#include "Test.h"在查找预编译头时跳过。
也就是说,Test.h文件根本没有被包含进工程中,于是编译器没编译Test.h里面的代码,所以才会产生未声明的标识符这样的错误。
参考技术B 有可能是跳过了头文件
你可以试试把#progma once改成传统一点的写法(#ifndef ...)追问

找到问题了 .cpp中stdafx头文件要放在test头文件前面。。。具体原因不晓得。。奇了怪了 以前从没遇到过

参考技术C 你的ThiTest 已经是结构体变量了,Good才是结构体类型 参考技术D #include "Test.h"放到#include"stdafx.h"下面

#include "stdafx.h"
#include "Test.h"

C++函数的分文件编写

函数分文件编写一般有4个步骤

1. 创建后缀名为.h的头文件  
2. 创建后缀名为.cpp的源文件
3. 在头文件中写函数的声明
4. 在源文件中写函数的定义

swap.h文件(相当于java的接口类)

#include
using namespace std;

//实现两个数字交换的函数声明
void swap(int a, int b);

swap.cpp文件(相当于java的实现类)

#include "swap.h"

void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

main文件(调用类)

#include "swap.h"
int main() {

	int a = 100;
	int b = 200;
	swap(a, b);

	system("pause");

	return 0;
}

 

以上是关于WIN32中我新建一个cpp和.h 在头文件中写了一个结构体然后在.cpp文件中使用该结构体总是报错具体如下图的主要内容,如果未能解决你的问题,请参考以下文章

在头文件中写好了一个函数,vs中哪个快捷键可以在.cpp中生成函数的定义

为啥在vs中我在头文件中设置了一个文件。在源文件中#include包含。当编译源文件时老说错误

不要在头文件中写函数定义

C++函数的分文件编写

VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类

win10中stdafx.h怎么导入ado库