【问题标题】:Getting variable size in C preprocessor在 C 预处理器中获取可变大小
【发布时间】:2020-05-13 14:24:42
【问题描述】:

我有一个问题,我正在编写一个头文件,它根据 c 标准数据类型的大小定义不同的结构和联合。我需要这样的东西:

#if sizeof(int) == 4
    typedef struct {
        int i;
    } test;
#else
    typedef struct {
        long i;
    } test;
#endif

很遗憾,这不起作用。

有人知道吗,我该怎么做?

感谢您的帮助。

【问题讨论】:

  • #if INT_MAX == 2147483647 ...记得#include <limits.h>

标签: c c-preprocessor preprocessor


【解决方案1】:

你不能这样做,因为预处理器对 C 语言一无所知,但为了这个目的,你有固定大小的整数类型,它们是标准的和可移植的

typedef struct {
    int32_t i;
} test;

【讨论】:

    【解决方案2】:

    严格来说,你不能。但是,您可以做的是将“众所周知的”预处理器定义作为提示来决定您所针对的架构、编译器和操作系统,并据此做出决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-01-08
      • 2013-02-02
      • 2010-09-16
      • 2010-11-15
      • 1970-01-01
      相关资源
      最近更新 更多