编译器错误:编辑Linux预处理程序语句时出现“预期表达式”

时间:2018-11-08 22:41:50

标签: c linux-kernel c-preprocessor

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

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”之前的预期表达式

1 个答案:

答案 0 :(得分:0)

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

#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