在C语言预处理程序中获取变量大小

问题描述 投票:0回答:2

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

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

不幸的是,这是不工作的。

有没有人知道,我怎么能做到这一点?

谢谢你的帮助。

c c-preprocessor preprocessor
2个回答
2
投票

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

typedef struct {
    int32_t i;
} test;

0
投票

严格来说,你不能这样做。然而,你可以做的是把 "众所周知 "的预处理器定义作为提示,以决定你的目标是哪种架构、编译器和操作系统,并据此决定。

© www.soinside.com 2019 - 2024. All rights reserved.