#define LOG(format,...) Logger::Log(format,__VA_ARGS__)
#define STRIP(netIp) GeneralUtils::inet_ntop_(netIp)
string GeneralUtils::inet_ntop_(unsigned int netIp){
char strIP[INET_ADDRSTRLEN];
in_addr sin_addr;
sin_addr.s_addr = netIp;
inet_ntop(AF_INET, &sin_addr.s_addr, strIP, sizeof strIP);
return string(strIP);
}
打电话来时:C++传递字符串可变参数
LOG("src %s dst %s" ,STRIP(src_ip_));
我得到的编译错误:
cannot pass objects of non-trivially-copyable type ‘std::string {aka struct std::basic_string<char>}’ through ‘...’
据我所知,可变参数为c兼容,所以我不能发送字符串给它。 有没有简单的方法来绕过它? 会不会是正确的解决这样的:
#define STRIP(netIp) GeneralUtils::inet_ntop_(netIp).data()
而不是在'STRIP'宏中使用'data'(或'c_str'),你可以在LOG调用中使用它:LOG(“src%s dst%s”,STRIP(src_ip_))。 '# –
@Joachim Pileborg我preffer修复一个地方,并不是所有的这个调用放到LOG –