在.h文件内定义什么样子的结构体可以被C语言和C++语言同时调用?
时间: 2024-10-08 08:15:46 浏览: 30
为了使一个在`.h`头文件中定义的结构体能够被C语言和C++语言共同编译和使用,你需要遵循以下几点:
1. 使用标准的C语言语法声明结构体(没有名字空间或类修饰)。
2. 避免C++特有的成员访问控制(如private、protected和public),因为这些关键字在C语言中是不被支持的。
3. 不要包含C++特有的特性,例如模板、命名空间、RTTI(运行时类型信息)等。
示例代码(假设名为`common_struct.h`):
```c
// common_struct.h
struct CommonStruct {
int data;
float some_float;
};
```
然后,你可以这样在C和C++源文件中引用这个结构体:
**C语言源文件 (`c_file.c`)**:
```c
#include "common_struct.h"
int main() {
CommonStruct cs;
cs.data = 10;
cs.some_float = 3.14;
return 0;
}
```
**C++源文件 (`cpp_file.cpp`)**:
```cpp
#include "common_struct.h"
int main() {
CommonStruct cs;
cs.data = 20; // 注意,在C++中,不需要像C那样显式指定类型
cs.some_float = 6.28;
return 0;
}
```
阅读全文