好的,所以我正在学习为多个平台编程,我看到很多包含/库使用宏来告诉编译器在特定平台上调用哪些函数。
所以我继续定义以下内容:
#if defined _WIN32 || defined _WIN64
#define Close(Handle) CloseHandle(Handle)
#else
#define Close(Handle) close(Handle)
#endif
但是我的 Socket 类具有以下成员函数:
Socket::Close()
{
//Close socket and clean up..
}
当我执行以下操作时:
Socket sock(Port, LocalHost);
sock.Close();
我得到:
error: 'class Socket' has no member named 'CloseHandle'
#define Close(Handle) CloseHandle(Handle)
^
note: in expansion of macro 'Close'
sock.Close();
^
有什么想法可以解决它,还是应该摆脱 Close 并使其成为 typedef?