这个问题是由于一些混合语言编程而产生的.我有一个我想用C++代码调用的Fortran例程.Fortran通过引用传递其所有参数(除非您另有说明).
所以我认为在我的C++代码中我会聪明(糟糕的开始)并定义类似这样的Fortran例程:
extern "C" void FORTRAN_ROUTINE (unsigned & flag);
Run Code Online (Sandbox Code Playgroud)
这段代码工作了一段时间,但(当然,当我需要离开时)突然开始吹回电话.清除指示一个munged调用堆栈.
一位工程师来到我身后,解决了这一问题,宣布该程序必须在C定义++作为
extern "C" void FORTRAN_ROUTINE (unsigned * flag);
Run Code Online (Sandbox Code Playgroud)
除了两件事,我接受了.一个是编译器不通过引用传递引用参数似乎相当直观,而且我无法在任何地方找到这样的文档.另一个是他同时在那里改变了大量其他代码,所以理论上它可能是另一个修改问题的修改.
所以问题是,C++如何实际传递参考参数?是否可以免费为小值或其他东西进行复制,复制?换句话说,参考参数在混合语言编程中是完全无用的吗?我想知道所以我再也没有犯同样的代码杀戮错误.