|
|
1
19
您应该使用能够执行平台检查并生成适当的编译器标志和/或配置头文件的配置脚本。 有几种工具可以执行此任务,如 autotools , Scons ,或 Cmake . 在您的例子中,我建议使用CMake,因为它与Windows很好地集成,能够生成visualstudio项目文件以及Mingw makefile。
下面是一个带注释的CMake示例(CMakeFiles.txt):
因此,您必须提供一个config-cmake.h.in模板,cmake将对该模板进行处理,以生成包含所需定义的config.h文件:
我邀请您访问cmake网站以了解有关此工具的更多信息。
|
|
|
2
6
一种方法是将特定于操作系统的头放入不同的目录中,并通过-I标志将该目录传递给编译器来控制找到哪个目录。 如果是你的话
|
|
|
3
4
使用预处理器本身并没有什么“坏”的。它的创建是有原因的,像这样的条件编译/包含是做得相当好的事情之一。
关键是保持代码的可读性。如果你最后有很多
1) 将条件包含移到单独的文件中。您的源文件将
2) 让makefile决定要包含的文件。同样,您的源文件
3) 如果您是在Linux系统上构建(意味着任何Win32代码都将由交叉编译器生成),您可以让构建脚本创建到相应头文件目录的符号链接。您的代码可以将目录引用为
|
|
4
2
预处理器本身并不是一件坏事。它是一个强大的工具,就像许多其他开发工具一样。问题是你如何使用它? 如果你使你的预处理清晰,有文档记录,并且合乎逻辑,那就完全不是问题了。当你开始玩一些难以理解的“聪明”把戏时,这就成了一个问题。
|
|
|
5
1
例如,假设我们需要在跨平台应用程序中从firewire相机获取图像。在不同的平台上实现这一点的方法完全不同。然后,有一个公共接口将放在CameraIeee1394.hpp中,并将两个依赖于平台的实现放在CameraIeee1394\u unix.cpp和CameraIeee1394\u w32.cpp中是有意义的。 为特定平台准备makefile的脚本可以通过简单地检查文件名后缀自动忽略外部平台的源文件。 |
|
|
6
0
我通常的解决方法是,首先创建一个标头来执行平台和编译器检测,例如:
现在你有了你的平台;然后可以在整个代码中使用自己的定义。 例如,如果您想要一个独立于编译器的64位整数,可以使用
如果你把它组织得井井有条,那么保持它的干净和理智就不会有问题
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 1 年前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 1 年前 |