我有一个跨平台项目,我发现宏可能是克服一些平台不一致的最简单方法,但是由于我不是计算机科学背景,所以我不确定我们是否可以这样使用宏:
#ifndef _WIN32
#define someWindowsFunction(x, y) someLinuxFunction(y, x, &x)
#endif
最佳答案
是的,它是合法的,但它是否有效取决于 someWindowsFunction()
的调用细节(x
必须是左值)和当然,所涉及功能的行为。
有很多细节需要用宏正确完成,因为它们是简单的文本替换。您应该养成的一件事是始终在宏参数周围加上括号:
#define someWindowsFunction(x, y) someLinuxFunction((y), (x), &(x))
偶尔会有您不想要 parent 的时候,但这种情况并不常见,除非您知道有理由不这样做,否则您应该这样做。
关于c++ - 像这样使用宏合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037088/