数据结构提前定义的问题
今天看到代码遇到数据结构提前定义的问题
//////////////////
head.h 文件中
#include "stdafx.h"
struct XD_JSON; ///< JSON 对象数据结构前置声明
typedef struct XD_JSON XD_JSON; ///< JSON 对象数据类型声明
XD_JSON* fJson;
XD_JSON* creat();
head.cpp 文件中
#include "stdafx.h"
struct XD_JSON {
int json;
};
XD_JSON* creat()
{
static XD_JSON* pXD_JSON = new XD_JSON ;
pXD_JSON->json = 9;
return (XD_JSON*)pXD_JSON;
}
//////////////之后的测试代码中
#include "head.h"
void test()
{
fJson = creat();
}
int main()
{
test();
printf("fJson->json = %d \n",fJson->json);
return 0;
}
运行不了 大家给我看看哈 本人菜鸟 详细点哈 多谢指教
[解决办法]
//////////////////
//head.h 文件中
struct XD_JSON; ///< JSON 对象数据结构前置声明
typedef struct XD_JSON XD_JSON; ///< JSON 对象数据类型声明
XD_JSON* JSON_creat();
int JSON_get(XD_JSON * json);
void JSON_set(XD_JSON * json, int value);
//head.cpp 文件中
#include "stdafx.h"
struct XD_JSON {
int json;
};
XD_JSON* JSON_creat()
{
XD_JSON* pXD_JSON = new XD_JSON ;
pXD_JSON->json = 9;
return (XD_JSON*)pXD_JSON;
}
int JSON_get(XD_JSON * json)
{
return json->json;
}
void JSON_set(XD_JSON * json, int value)
{
json->json=value;
}
//////////////之后的测试代码中
#include "head.h"
XD_JSON * fJson = NULL;
void test()
{
fJson = JSON_creat();
}
int main()
{
test();
printf("fJson->json = %d \n",JSON_get(fJson));
return 0;
}
//head.h
//结构定义应该放在头文件中。。
struct XD_JSON {
int json;
};
typedef struct XD_JSON XD_JSON; ///< JSON 对象数据类型声明
XD_JSON* creat();
//head.cpp
#include "head.h"
XD_JSON* creat()
{
static XD_JSON* pXD_JSON = new XD_JSON ;
pXD_JSON->json = 9;
return (XD_JSON*)pXD_JSON;
}
//test.cpp
#include <stdio.h>
#include "head.h"
XD_JSON* fJson;//全局变量放在cpp中
void test()
{
fJson = creat();
}
int main()
{
test();
printf("fJson->json = %d \n",fJson->json);
return 0;
}