C++返回值类型为string的函数，如何给C代码调用？
按C语言风格包装一层函数即可。

常规方法有三。

第一是内部静态string变量，返回const char *的c_str。外部不用释放。

第二是使用strdup复制一份，规定调用方必须负责释放。

第三是让调用方传入一个缓冲区，然后把string的cstr用 strcpy复制过去。

优缺点：

第一种方法无须分配无需释放，心智负担最低，但函数不可再入，不可递归，不可多线程调用。仅仅单线程可用。

第二种方法违反了「谁分配谁释放」原则，一般不建议。如果你不太讲究，这样用也无不可。

第三种方法要求调用方提供缓冲区，略显麻烦，但不违反常规的编程范式。也是标准C风格最常用的方式。

C标准库用第一种和第三种方法较多。