#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);
}
への呼び出し時:
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 ‘...’
varargs は c 互換であることを理解しているため、文字列を送信できません。それをバイパスする簡単な方法はありますか?次のように修正するのは正しいでしょうか。
#define STRIP(netIp) GeneralUtils::inet_ntop_(netIp).data()