【发布时间】:2019-07-22 04:16:35
【问题描述】:
当我尝试在 Atollic TrueSTUDIO 中为 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);
我应该怎么做才能纠正这种行为?
【问题讨论】:
-
我建议使用外部格式化程序(如clang-format,可通过CppStyle 等插件使用)。 CDT 的内置格式化程序未维护且存在相当多的错误,尤其是在涉及宏时。
-
我无法安装 CppStyle,因为它与 STM32 9.3.0 的 Atollic TrueSTUDIO 中的 Eclipse 版本不兼容。如果不兼容,有没有办法安装它?
-
我能够使用“从更新站点安装”安装方法在 Atollic 中安装 CppStyle,使用
http://www.cppstyle.com/mars更新站点。
标签: eclipse eclipse-cdt indentation stm32 formatter