gpt4 book ai didi

c - 小端宏

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:24 24 4
gpt4 key购买 nike

所以我有一个令人兴奋的新问题,我非常希望得到解答。所以我正在编写一个文件压缩器,基本上是一个 tar 并且老实说,该代码似乎运行得很好。我现在陷入困境的是项目所需的附加功能。我们需要能够生成二进制文件,就好像它们是在小端机器上生成的一样。我已经创建了一个头文件,我已经将其包含在我的代码中,它应该为我进行位交换。因此:

#ifndef MYLIB_H
#define MYLIB_H

#define BITS_PER_BYTE 8
#define true 1
#define false 0

typedef unsigned char uchar;
typedef unsigned long ulong;
typedef unsigned int uint;
typedef unsigned short ushort;

#ifdef LITTLE_ENDIAN

#define SwapULong(val) (val << 24 | (val << 8 & 0xFF0000) | (val >> 8 & 0xFF00) | val >> 24 & 0xFF)
#define SwapUShort(val) (val << BITS_PER_BYTE | val >> BITS_PER_BYTE)

#else

#define SwapULong(val) (val)
#define SwapUShort(val) (val)

#endif

#endif

所以当我用 gcc 编译并运行程序时没有错误。但是,当我对输出执行 hexdump -C 时,输出仍处于大端顺序!

然后我尝试使用 -E 标志进行编译,我得到了一堆这样的语句

./compress line #: typedef: command not found

变成了

./compress line #: __extension__ : command not found

直到终端输出的最后几行显示

./compress line 86: syntax error near unexpected '}' token
./compress line 86: __extension__ typedef struct { int __val[2]; } __fsid_t;

那么有什么想法可能导致我出现这种情况吗?

如有任何帮助,我们将不胜感激。

最佳答案

您需要包含 endian.h header 。

关于c - 小端宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com