我正在尝试实现一个将作为共享库生成的外部c++头接口。他们的示例接口具有封装在外部"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友好。