【发布时间】:2009-12-15 08:40:02
【问题描述】:
我遇到了一段工作(使用 XLC8 和 MSFT9 编译器)代码,其中包含一个 C++ 文件,其中包含一个使用 C 链接和引用参数定义的函数。这让我很烦,因为引用仅是 C++。有问题的函数是从 C 代码中调用的,它被声明为采用指向同一类型的指针参数代替引用参数。
简化示例:
C++ 文件:
extern "C" void f(int &i)
{
i++;
}
C 文件:
void f(int *);
int main()
{
int a = 2;
f(&a);
printf("%d\n", a); /* Prints 3 */
}
现在,流行的说法是,大多数 C++ 编译器在底层实现引用就像指针一样。是不是这样,只是纯粹的运气,这个代码工作的原因还是它在 C++ 规范中的某个地方说当你定义一个带有引用参数和 C 链接的函数时结果是什么?我还没有找到这方面的任何信息。
【问题讨论】:
-
据我所知,C++ 标准(链接规范)的第 7.5 节对此没有任何说明。
标签: c++ c pointers compiler-construction reference