【发布时间】:2020-08-16 21:38:44
【问题描述】:
我从 github https://github.com/fabvalaaah/rlec 下载了这个项目,并且在 bitmap.h 中 typedef 结构中有错误(应为“;”)。在项目的其余部分中,_bitmap 存在错误(标识符未定义)。我正在使用 Visual Studio 2019。如何解决?
#ifndef BITMAP_H
#define BITMAP_H
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <stdint.h>
#include "common.h"
const uint8_t lineFeed;
const uint8_t imageEnd;
typedef struct __attribute__((__packed__)) _bitmap{ //Error is here on _bitmap
uint8_t magicNumber[2];
uint32_t size;
uint8_t reserved[4];
uint32_t startOffset;
uint32_t headerSize;
uint32_t width;
uint32_t height;
uint16_t planes;
uint16_t depth;
uint32_t compression;
uint32_t imageSize;
uint32_t xPPM;
uint32_t yPPM;
uint32_t nUsedColors;
uint32_t nImportantColors;
}
_bitmap;
void printHeader(_bitmap* image);
int RLECompression(FILE* ptrIn, FILE* ptrOut);
int RLEDecompression(FILE* ptrIn, FILE* ptrOut);
#endif /* BITMAP_H */
【问题讨论】:
-
请edit您的问题,以便您可以复制粘贴(作为文本)您遇到的完整和完整的错误。另外,请在出现错误的显示代码中添加注释。另外请告诉我们您使用的是什么编译器,因为显示的代码包含一些可能无法在您的编译器上运行的非标准和不可移植的扩展。
-
尝试创建一个minimal reproducible example 来向项目作者报告问题不是更好吗?
-
哪个编译器?属性 packed 是仅 gcc 的非标准扩展,其他编译器无法识别。此外,出于多种原因,您永远不应该在头文件中声明变量。
-
我编辑了我的问题。我正在使用 Visual Studio 2019,错误在 typedef struct 中。
-
你的错误。如前所述,头文件使用非标准且不可移植的扩展名(
__attribute__事物),并非在所有编译器中都可用。最值得注意的__attribute__不受 Visual Studio 支持。 Visual C++ 变体是the pack pragma。您需要添加一些条件编译来选择使用哪个(并且可能向项目作者添加功能请求以添加此类)。
标签: c compiler-errors