2
A
回答
5
你可以宣布在.h
文件:
extern const size_t SIZE_OF_MY_STRUCT;
而在.cpp
文件中定义SIZE_OF_MY_STRUCT
为:
extern const size_t SIZE_OF_MY_STRUCT = sizeof(MyStruct);
所以,你会不会有一个函数调用的开销。
5
在C++提供了效用函数:
extern "C" size_t ReturnSizeOfMyStruct(void) {
return sizeof(MyStruct);
}
然后调用它在C代码:
extern size_t ReturnSizeOfMyStruct(void);
size_t howBig = ReturnSizeOfMyStruct();
1
如果struct
实际上是用C++特性(成员函数,private
/protected
/构造函数和/或析构函数继承自另一个类/结构)[或者具有使用这些特性的成员],那么你没有太多选择:
- 编写一个返回大小的函数,该函数编译为C++,但调用约定为
extern "C"
。 - 重组您的代码,以便您不需要以其他方式在您的C代码中使用sizeof(C++结构体)。
- 更改您的C代码,使其与C++兼容并使用C++编译器进行编译。
在上面的主题中可能会有一些其他变体,但本质上,假设它是一个“C++结构”,不能用C编译,你坚持用C++友好的方式修复它。显然,如果C++结构没有使用任何C++特性 - 它只是一个普通的旧数据,那么解决方案显然是将结构移出当前标题并将其放入可包含在标题中的标题C和C++。
相关问题
- 1. 将VB.net代码与c#代码混合
- 2. 反混淆C++源代码
- 3. 混合Objective-C和C++代码
- 4. 在C源代码
- 5. 臂C代码disasembly混乱,
- 6. 是否可以编译c/C++混合源代码?
- 7. 从WebBrowser获取源代码WPF C#
- 8. 发布时混淆源代码(C#)
- 9. 与Berkeley DB混合的C++/CLI代码
- 10. 在混合C/Fortran代码中捕获浮点异常
- 11. 在代码中在asp.net C中获取sql错误代码#
- 12. Objective-C源代码
- 13. Google.Apis.Auth源代码c#
- 14. C源代码DLL
- 15. c#.net源代码
- 16. C库源代码
- 17. 在Windows上用Visual Studio混合C#代码和未被管理的C++代码
- 18. 如何从C#中的网页源代码获取图像源代码#
- 19. 在C源代码中加密密码
- 20. 测试C/C++源代码
- 21. 在静态库中混合C&C++代码
- 22. 混合使用C和C++代码的产量在GCC
- 23. 在多个源代码中将ObjC和C++与C++模板类混合使用
- 24. C++获取国家代码
- 25. 获取源代码。
- 26. 获取源代码
- 27. C++中的SetFileAttributeW源代码
- 28. c代码输出混乱
- 29. 部分混淆C代码
- 30. C代码NOP混淆
将C源代码重写为C++源代码并使用C++编译器进行编译。 – pmg 2013-02-27 21:00:54
我认为C++常见问题解答全称是http://yosefk.com/c++fqa/mixing.html – 2013-02-27 21:05:27