当宏是函数参数时,Eclipse C / C ++格式化程序的换行或缩进问题

时间:2019-02-28 09:38:27

标签: eclipse eclipse-cdt indentation stm32 formatter

当我尝试在Atollic TrueSTUDIO for STM32 9.3.0中格式化C代码时遇到问题。当宏是函数的参数时,自动换行不起作用。这是一个错误,或者我在Formatter中找不到正确的设置。

#define GPIO_PIN_7                 ((uint16_t)0x0080U)

    GPIO_InitAsOutput(&LED_D, GPIOC,
    GPIO_PIN_7,
                      GPIO_OutputType_PushPull, GPIO_Pull_None,
                      GPIO_Speed_Low);

在上面的代码中,GPIO_PIN_7是这里的问题。换行宽度为80。当我按“ CTRL + SHIFT + F”时,应该看起来像这样:

PIO_InitAsOutput(&LED_D, GPIOC, GPIO_PIN_7,
                 GPIO_OutputType_PushPull, GPIO_Pull_None,
                 GPIO_Speed_Low);

但是,它不会更改格式。

另一个奇怪的是,如果我将GPIO_PIN_7替换为((uint16_t)0x0080U),它正在工作并且代码如下:

PIO_InitAsOutput(&LED_D, GPIOC, ((uint16_t)0x0080U),
                 GPIO_OutputType_PushPull, GPIO_Pull_None,
                 GPIO_Speed_Low);

我该怎么做才能纠正这种行为?

1 个答案:

答案 0 :(得分:1)

您刚刚遇到了Eclipse错误459301。在此问题修复之前,如果可以将Eclipse 2019-03与CDT 9.7一起使用,则只能使用格式标签。

//@formatter:off
PIO_InitAsOutput(&LED_D, GPIOC, GPIO_PIN_7, GPIO_OutputType_PushPull,
                                GPIO_Pull_None, GPIO_Speed_Low);
//@formatter:on