我写了一个小函数来接受一个“字符串”并记录它。
void
IPC::bomb (char * msg) { /* etc */ }
这个调用它的实例不编译:
bomb( __FUNCTION__": socket() call failed: " + strerror(errno));
诊断:
./c/IPC.cpp:26: error: expected ')' before string constant
./c/IPC.cpp:26: error: invalid conversion from 'const char*' to 'char*'
我对如何有效地使用带引号的文字、std::string、char* 以及 const-ness 如何融入其中感到非常困惑。我该如何解决上述问题?一般来说,是否有一些关于字符串连接的经验法则,尤其是。混合 char* 和字符串时?
更新 1:工作中可能存在另一个问题:C 预处理器显示了这种扩展:
bomb( std::string(__FUNCTION__ ": socket() call failed: ") + strerror((*__errno_location ())));