首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问c文件中由公共类函数修改的c++全局变量

如何访问c文件中由公共类函数修改的c++全局变量
EN

Stack Overflow用户
提问于 2015-12-21 00:48:14
回答 1查看 48关注 0票数 0
代码语言:javascript
复制
DialogReprog.cpp

unsigned char PasswordValue[16];
unsigned char SystemKeyValue[16];

void CDialogReprog::OnOK()
{
// TODO: Add your control notification handler code here
char *ptr;
size_t count=0;

UpdateData();
TCHAR buffer[50];
GetDlgItemText(IDC_PASSWORD, buffer, 50);
ptr = (char *)buffer;
for(count = 2; count < 6; count++)
{
    sscanf(ptr, "%2hhx",&PasswordValue[count-2]);
    ptr += 2;
}

GetDlgItemText(IDC_SYSKEY, buffer, 50);
ptr = (char *)buffer;
for(count = 2; count < 18; count++)
{
    sscanf(ptr, "%2hhx",&SystemKeyValue[count-2]);
    ptr += 2;
}

UpdateData(FALSE);
CDialog::OnOK();

}

需要访问C文件中的PasswordValue字节数组来访问数据,当我调试时,可以在监视窗口中看到数据(我正在使用VisualStudio2005forMyProject)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 01:06:51

如果您想用C代码访问C++代码,那么在编译和链接方面,您需要理解语言之间的一个主要区别。每种语言都使用名称残缺。这意味着相同的变量/函数将具有不同的链接器名称,这取决于您在C或C++中创建它。这也是为什么可以在C++中重载函数,而不能在C中重载的原因。

当涉及到修复您的问题时,最普遍且最简单的解决方案是声明这些变量,就像它们使用C样式的故障一样。要做到这一点,只需像这样使用extern "C"

代码语言:javascript
复制
extern "C"{
    unsigned char PasswordValue[16];
    unsigned char SystemKeyValue[16];
}

在本例中,您将能够从C文件访问这些变量。

这同样适用于函数,但是这也意味着您不能使用像重载这些名称这样的C++特性(如果您尝试链接器会抱怨)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34387582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档