gpt4 book ai didi

c++ - 将 C++ 变量从类传递给 C 函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:42 25 4
gpt4 key购买 nike

假设我有以下代码,可以这样做吗?我的意思是将 C++ 对象内部的变量传递给函数。

在 foo.hpp 中

class foo
{
public :

int a;
}

在 main.cpp 中

#include "cfile.h"
#include "foo.hpp"

void main()
{

foo * fooPtr = new foo();
int RetVal = MyCfunc(fooPtr->a);
}

在cfile.c中

#include "cfile.h"

int MyCfunc(int var)
{

var + = 1;
return var;
}

最佳答案

从技术上讲,这是可以编译的(好吧,在修复了已经指出的各种语法问题之后),但您必须小心。您需要确保一切都可以链接(即为 C 和 C++ 源代码正确创建符号);我通常使用 g++ 作为编译器,对于 C 文件,它工作正常。其次,您必须确保告诉您的 C++ 代码您想要引用 C 代码。因此,在您要添加的“cfile.h”中

#ifdef __clpusplus
extern "C" {
#endif

// your C include file

#ifdef __cpluspus
}
#endif

这确保您可以将 C 包含文件包含到 C++ 源代码中,同时告诉 C++ 编译器在编译代码时使用 C 样式的名称重整。然后继续编译 C 和 C++ 文件,并将它们链接到可执行文件中:

g++ -g -O0 -o test main.cpp cfile.c

这里有更多相关信息:Combining C++ and C - how does #ifdef __cplusplus work?

关于c++ - 将 C++ 变量从类传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17523714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com