在我的项目中,我们有一个类似于此的头文件:
typedef struct MyStruct
{
int x;
} MyStruct;
extern "C" MyStruct my_struct;
以前,它只包含在 C++ 源文件中。现在,我需要将它包含在 C 文件中。因此,我执行以下操作:
typedef struct MyStruct
{
int x;
} MyStruct;
#ifdef __cplusplus
extern "C" MyStruct my_struct;
#else
MyStruct my_struct;
#endif
我知道 extern "C" 会将 my_struct 全局变量声明为 C 链接,但这是否意味着如果我将此文件包含在 C 编译文件和 CPP 编译文件中,链接器将确定我的意图在最终链接的可执行文件中,我只想要一个 MyStruct 供 C 和 CPP 文件使用?
编辑:
我已经接受了已接受答案的建议。在标题中,我有
typedef struct MyStruct
{
int x;
} MyStruct;
#ifdef __cplusplus
extern "C" MyStruct my_struct;
#else
extern MyStruct my_struct;
#endif
在cpp源文件中,我有
extern "C" {MyStruct my_struct;}
一切都在建立。