不知下面的解决方法是可行的,哪些可以在编译器级的最深影响后。
// foo.h
typedef struct foo
{
int i;
#ifdef __cplusplus
foo(int _i) : i(_i) {};
#endif
} foo;
// bar.c
#include "foo.h"
foo bar;
bar.i = 1;
// bar.cpp
#include "foo.h"
foo bar(2);
在我看来是一个伟大的伎俩利用“结构多态性”,能够保持便携性为C遗留代码,但我的感觉是,在某些方面,我现在做两份不同类型。
你也在使用两种不同的语言......你想达到什么目的? –
如果使用C编译器进行编译,则在结构中没有C++函数。如果使用C++编译器编译,则没有C结构。是的,你有两种完全不同的类型。 – Gerhardh
环境是一个自己的C++ 11库,它依赖于旧的C89库在其他库中。我的一些c文件是这个lib的客户端,并且是C11编译的;该示例结构将主要在我的库上共享,并且我想确保它是*完全相同的类型。 –