MSYS2 上带有 gcc 的 UNDERFLOW 关键字

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

我在编译一个非常简单的代码时遇到了一些非常奇怪的问题

typedef volatile struct _underflow_test
{
    unsigned int    OPERATION_MODE;
    unsigned int    UNDERFLOW;
} underflow_test;

此代码无法使用

gcc12.2
在 MSYS2 中编译。使用
-E
选项,我检查了有关的代码是否已转换为:

typedef volatile struct _underflow_test
{
    unsigned int OPERATION_MODE;
    unsigned int 
# 4137 "C:/Users/work/eec_control/TC367_project/Libraries/Infra/Sfr/TC36A/_Reg/IfxGeth_regdef.h" 3
                      4
# 4137 "C:/Users/work/eec_control/TC367_project/Libraries/Infra/Sfr/TC36A/_Reg/IfxGeth_regdef.h"
                               ;
} underflow_test;

因此预处理器将

UNDERFLOW
转换为 4。然后此转换无法编译。 使用
gcc11
不会这样做 - 它不会将
UNDERFLOW
字段转换为 4.

两种情况下的命令行是一样的:

cd C:/Users/work/build-eec-gnu/core_files/bsp && C:/msys64/mingw64/bin/gcc.exe 
-DROOT_INSTALL_DIR="\"C:/Program Files (x86)/eec-control\"" 
@CMakeFiles/bsp-core-tc367-a1.dir/includes_C.rsp 
-Wall -Wextra -Wno-unknown-pragmas -Wfloat-equal -Wconversion -Wparentheses -Wunused-parameter -Wunused-variable -Wstrict-prototypes  
-DMAJOR_RELEASE_NUMBER=1 -DMINOR_RELEASE_NUMBER=0 -DPATCH_RELEASE_NUMBER=42 -E -O0 -DNDEBUG -g 
-fdiagnostics-color=always -std=gnu99 -MD -MT core_files/bsp/CMakeFiles/bsp-core-tc367-a1.dir/hal.c.obj 
-MF CMakeFiles/bsp-core-tc367-a1.dir/hal.c.obj.d -o CMakeFiles/bsp-core-tc367-a1.dir/hal.c.obj 
-c C:/Users/work/eec_control/core_files/bsp/hal.c 

任何人都知道是什么原因造成的,以及如何解决这种奇怪的效果?也许我错过了什么。

c gcc msys2 gcc11 gcc12
© www.soinside.com 2019 - 2024. All rights reserved.