条件编译 - 实现替代方案

时间:2013-12-03 14:34:24

标签: c cross-platform portability conditional-compilation

我一直在寻找一个好的资源,为C项目的条件编译和跨平台可移植性提供最佳实践的讨论。

例如:

编写一个网络库(取决于底层平台)使用TCP或SCTP。通常的方法可能是定义一个通用的API规范,让makefile决定编译正确的实现。

我无法想象使用MACROS和代码复制的条件编译在这里是一个好主意(因为这样的网络实现大致相同,具有不同的SEND和RECEIVE原语)。

是否有人有好的建议或讨论这些问题的最佳实践?

感谢您的投入!

1 个答案:

答案 0 :(得分:0)

如果您将它们限制在极少数地方,那么宏很好。例如:

#if defined LINUX
#   include "linux/mylib.h"
#elif defined WINDOWS
#   include "windows/mylib.h"
#else
#   error "unsupported platform!"
#endif