编写平台特定代码的最佳(最简洁)方式

gpa*_*lex 6 c++ qt

假设您的代码段必须不同,具体取决于运行程序的操作系统。
有一种古老的做法:

#ifdef WIN32
   // code for Windows systems
#else
   // code for other systems
#endif
Run Code Online (Sandbox Code Playgroud)

但是必须有更清洁的解决方案,对吗?

Rus*_*ltz 0

在我的职业生涯中,我必须做很多这样的事情,支持在嵌入式设备以及 Windows 上构建和运行的代码,然后让它在不同的 ASICS 和/或 ASICS 修订版上运行。

我倾向于按照您的建议进行操作,然后当事情确实出现分歧时,继续定义我希望在平台之间修复的接口,然后拥有单独的实现文件甚至库。随着代码库变旧并且需要添加更多异常,它可能会变得非常混乱。

有时你可以将这些东西隐藏在头文件中,这样你的代码看起来“干净”,但很多时候这只是混淆了一堆宏魔法背后发生的事情。

我要补充的唯一一件事是,如果没有定义任何选项,我倾向于使 #ifdef/#else/#endif 链失败。这迫使我在新版本出现时重新审视这个问题。有些人更喜欢它有一个默认值,但我发现这只是隐藏了潜在的失败。

诚然,我在嵌入式世界中工作,其中代码空间至关重要(因为内存很小且固定),不幸的是代码清洁度必须退居二线。