用extern c编写c++代码



我正在尝试实现一个将作为共享库生成的外部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友好。

最新更新