提问人:somecollagist 提问时间:6/19/2023 最后编辑:somecollagist 更新时间:6/19/2023 访问量:89
GCC 编译指示区域错误:“#pragma”之前的预期表达式
GCC Pragma region error: expected expression before ‘#pragma’
问:
我正在尝试使用 and 指令折叠数组中的元素,但每次编译它时我都会得到:#pragma region
#pragma endregion
gcc -ffreestanding -fshort-wchar -fno-stack-protector -Wall -Wno-implicit-function-declaration -c main.c -o main.o
main.c:16:13: error: expected expression before ‘#pragma’
16 | #pragma region ExclamationMark
| ^~~~~~
下面是一个最小的可重现示例:
#define FontHeight 16
typedef struct { unsigned char g[FontHeight]; } Glyph;
#define GLYPH(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) (Glyph){{_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16}}
#define EMPTY_GLYPH (Glyph){{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
Glyph Font[] = {
EMPTY_GLYPH,
EMPTY_GLYPH,
EMPTY_GLYPH,
EMPTY_GLYPH,
// and so on...
#pragma region ExclamationMark
GLYPH(
0b00000000,
0b00000000,
0b00000000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00000000,
0b00001000,
0b00001000,
0b00000000,
0b00000000,
0b00000000
),
#pragma endregion ExclamationMark
};
GCC v13 支持上述两个指令(我在 Arch Linux 上使用 GCC 13.1.1),但即便如此,GCC 还是给我抛出了一个错误——据我所知,这最多应该是一个警告,我的工具链不会对错误发出任何警告。
我之所以要这样做,是因为我尝试折叠的元素有多行长,它们本身通过使用头文件中的指令进行了简化。源文件的永久链接在这里。#define
提前致谢。
答: 暂无答案
评论
#pragma
typedef struct { uint8_t g[FontHeight]; } Glyph; #define GLYPH(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) (Glyph){{_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16}} #define EMPTY_GLYPH (Glyph){{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
#include
#pragma
Font[]
#pragma region