C如何调用CPP中的全局变量?

hellobbbb_123456 2011-11-21 03:58:45
//global.h
#include <windows.h>
#include <stdio.h>

//定义全局数组
extern unsigned char arrData[];

//global.cpp
unsigned char arrData[1024];

//convert.h
//定义全局函数
extern "C" void Test();

//convert.cpp
#include "global.h"

void Test()
{
memset(arrData, 0 , 1024);
memcpy(arrData, "test", 4);
printf("arrData = %s", arrData);
}

//测试调用全局变量和数组
//test.c
//#include "convert.h" //引用该头文件,编译出错

extern void Test(); //全局函数
extern unsigned char arrData[]; //全局数组

int main()
{
Test(); //全局函数,结果输出正常!

//这里编译出错误,提示arrData不识别 !!!!!!
printf("arrData = %s", arrData); //全局数组

return 0;
}
...全文
816 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellobbbb_123456 2011-11-21
  • 打赏
  • 举报
回复
//global.h  
#include <windows.h>
#include <stdio.h>

extern "C" unsigned char arrData[]; //全局数组

//global.cpp
unsigned char arrData[1024];

//convert.h
extern "C" void Test();

//convert.cpp
#include "global.h"

void Test()
{
memset(arrData, 0 , 1024);
memcpy(arrData, "test", 4);
printf("arrData = %s", arrData);
}

//测试
extern void Test(); //全局函数
extern unsigned char arrData[]; //全局数组

int main()
{
Test();
printf("arrData = %s", arrData);

return 0;
}
hellobbbb_123456 2011-11-21
  • 打赏
  • 举报
回复
谢谢提醒,问题已经解决.
君子美玉 2011-11-21
  • 打赏
  • 举报
回复
加个extern "C",还有最好加上#ifdef __cplusplus,否则C++调用的时候可能会出问题
Greg_han 2011-11-21
  • 打赏
  • 举报
回复
extern"C"。
FrankHB1989 2011-11-21
  • 打赏
  • 举报
回复
arrData也要extern"C"。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧