我正在尝试实现一个将作为共享库生成的外部 C++ header 接口(interface)。他们的示例界面具有包装在 extern "C"中的 c 样式功能,因为他们不希望执行名称修改。
我当前的实现依赖于 qt。我现在可以将此 qt 代码放在外部“C”中并期望它开箱即用吗?如果这有效,为什么?
伪代码://不要指望它能工作并且可能包含错误。
extern "C"{
void doStuff(){
QString filename="Data.txt";
QFile file( filename );
if ( file.open(QIODevice::ReadWrite) )
{
QTextStream stream( &file );
std::stringstream ss;
ss<<"something"<< endl;
}
}
}
谢谢!
最佳答案
extern "C"
不会阻止您在函数内部使用 C++。它只影响调用函数的方式(包括函数的名称)。由于名称未被破坏,并且调用序列可能与标准 C++ 调用序列不同,因此您必须确保该函数在它所在的任何 C++ 翻译单元中声明为 extern "C"
出现。此外,“C”
名称没有命名空间,但您可能知道这一点。
据我所知,Qt 没有做任何事情来使您的代码或多或少对 C 语言友好。
关于c++ - 在 extern c 中编写 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28492565/