【发布时间】:2018-03-22 16:38:58
【问题描述】:
我们想使用一些预处理指令在 C 中编写与字节序无关的代码。我们可以定义一个预处理器指令来帮助我们在编译时检查机器的字节顺序吗?我们想要下面的示例代码。任何帮助将不胜感激。
#if(some conditions)
#define LITTLE_ENDIAN 1
#else
#define LITTLE_ENDIAN 0
#endif
我知道有几种解决方案,但这些都不能满足我的要求。我不想在大端机器中编译特定于小端的代码,反之亦然。例如
#if LITTLE_ENDIAN
line1..
line2..
line3..
#else
line4..
line5..
line6..
#endif
在大端机器中,我不想编译第 1,2 和 3 行。应该禁用这三行。
【问题讨论】:
-
如果您使用 C 编程,请仅添加 C 标签(即使该问题可能同时适用于 C 和 C++)。特别是不要添加特定于版本的语言标签(如
c++14),除非您的问题是关于该语言的特定版本。 -
至于您的问题,有 许多 个开源项目有同样的需求,并且已经解决了。试着环顾四周。
-
@Someprogrammerdude 我找到了一些解决方案,但这些解决方案不适用于编译时检查。请分享解决方案。
-
我解决这个问题的方法是使用我最喜欢的搜索引擎并寻找现有的解决方案。如果您想要的话,添加单词
preprocessor或compile time很重要。并阅读我的编译器的文档(它可能已经有宏)。 -
请您在这里分享解决方案。这对我真的很有帮助。
标签: c++ c c-preprocessor c++14 preprocessor-directive