c++ - 在 C++ 中引用 C 结构

标签 c++ c reference

我需要在我的 C++ 代码中使用一些 C 定义的结构。下面是C头文件中的结构

#ifdef __cplusplus
extern "C" {
#endif

typedef struct TestParameters {
    long     p1;
    long     p2;
    long     p3;
} TestParameters_t;
#ifdef __cplusplus
}

下面的代码可以编译,但行为是否按照标准定义和有效以接收 C 实例作为引用并使用它?

TestParameters_t testParams;
test(testParams);

// Is it valid to receive a C struct instance as a reference in C++ code
void test(TestParameters_t &testParams)
{

}

最佳答案

是的,即使结构来自 C 头文件,您也可以像使用 C++ 头文件中定义的结构一样使用它。

使用其引用或地址传递结构比使用其值更好。

如果函数不会修改它,请不要忘记将其标记为const

void test( const TestParameters_t &testParams)
{
  // Won't modify testParams;
}

void test( TestParameters_t &testParams)
{
  // Will modify testParams;
}

关于c++ - 在 C++ 中引用 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547340/

相关文章:

c++ - 什么是 -fPIC 编译选项?

c++ - 无法在 C++ 中编译 min_element

C++ 视频播放器 ffmpeg : get pixel data?

c++ - 使用特定值初始化可变二维数组

c++ - C++中的引用速度

Android:无法将@drawable/picture 转换为drawable

c++ - 无法在类中使用以数组作为参数的函数模板

c - 做之前的预期表达。使用 do while 循环的宏

比较 C 中的字符

c++ - 写入 ostream 的常量引用