clang-format - 括号换行和按位运算

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

我提取了这段代码,用于从数据表中组装传感器数据。有什么方法可以使其更具可读性,最好是将某些括号和按位运算分解为新行,而不是弄乱列宽?

var1 = ((((adc_T>>3) – ((BME280_S32_t)dig_T1<<1))) * ((BME280_S32_t)dig_T2)) >> 11;
var2 = (((((adc_T>>4) – ((BME280_S32_t)dig_T1)) * ((adc_T>>4) – ((BME280_S32_t)dig_T1))) >> 12) *
       ((BME280_S32_t)dig_T3)) >> 14;
t_fine = var1 + var2;
T = (t_fine * 5 + 128) >> 8;
c clang-format
1个回答
0
投票

我会转换为更多行并引入更多变量。任何优化编译器都不会创建它们。

BME280_S32_t adc_T_shifted3 = adc_T >> 3;
BME280_S32_t dig_T1_shifted1 = (BME280_S32_t)dig_T1 << 1;

BME280_S32_t var1 = (adc_T_shifted3 - dig_T1_shifted1) * ((BME280_S32_t)dig_T2);
var1 = var1 >> 11;

BME280_S32_t adc_T_shifted4 = adc_T >> 4;
BME280_S32_t diff_T1 = adc_T_shifted4 - (BME280_S32_t)dig_T1;

BME280_S32_t var2 = (diff_T1 * diff_T1) >> 12;
var2 = (var2 * (BME280_S32_t)dig_T3) >> 14;

BME280_S32_t t_fine = var1 + var2;

BME280_S32_t T = (t_fine * 5 + 128) >> 8;
© www.soinside.com 2019 - 2024. All rights reserved.