c语言 - 编译器错误:编辑 Linux 预处理器语句时'expected expression'



我正试图将一个条件语句添加到一些每处理器代码中,但我不确定它为什么不能编译。这是未更改的代码:

static struct i2c_board_info ccwmx51_i2c_devices[] __initdata = {
{
// Use erdigitemp2 driver for device id 0x48 (digital temperature sensor)
I2C_BOARD_INFO("erdigitemp2", 0x48)
},
{
// Use erdigitemp2 driver for device id 0x4c (digital temperature sensor)
I2C_BOARD_INFO("erdigitemp2", 0x4c)
},
{
// Use tvp5150 driver for device id 0x5c (camera decoder)
I2C_BOARD_INFO("tvp5150tj", 0xb8 >> 1)
},
#if defined(CONFIG_TJTKMJ_LSM303DLHC)
{
// STMICROELECTRONICS LSM303DLHC e-compass
// accelerometer
I2C_BOARD_INFO("lsm303dlhc_acc", 0x19)
},
{
// magnetometer
I2C_BOARD_INFO("lsm303dlhc_mag", 0x1e)
},
#endif  
#if defined(CONFIG_INPUT_MMA7455L) || defined(CONFIG_INPUT_MMA7455L_MODULE)
{
I2C_BOARD_INFO("mma7455l", 0x1d),
.irq = IOMUX_TO_IRQ(MX51_PIN_GPIO1_7),
},
#endif
#if defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753) || defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753_MODULE)
{
I2C_BOARD_INFO("wm8753", 0x1A),
},
#endif
#if defined (CONFIG_MXC_CAMERA_MICRON111_1) || defined(CONFIG_MXC_CAMERA_MICRON111_1_MODULE)
{
I2C_BOARD_INFO("mt9v111_1", 0xB8>>1),
},
#endif
#if defined (CONFIG_MXC_CAMERA_MICRON111_2) || defined(CONFIG_MXC_CAMERA_MICRON111_2_MODULE)
{
I2C_BOARD_INFO("mt9v111_2", 0x90>>1),
},
#endif
};

我的修改是一个简单的if语句:

if (hardware_id() == 0) {
#if defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753) || defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753_MODULE)
{
I2C_BOARD_INFO("wm8753", 0x1A),
},
#endif
}

编译器错误为:

错误:在"if"之前需要表达式

我不确定这是否能解决您的问题,但它至少应该编译。

#if defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753) || defined(CONFIG_SND_SOC_IMX_CCWMX51_WM8753_MODULE)
if (hardware_id() == 0){
I2C_BOARD_INFO("wm8753", 0x1A),
}else{
//something
},
#endif

最新更新