gpt4 book ai didi

c - 预期说明符限定符列表位于 'if' 之前

转载 作者:行者123 更新时间:2023-11-30 17:48:14 26 4
gpt4 key购买 nike

我在为 Android 编译 Linux 内核时遇到错误...

我修改了电池驱动程序:

这里有 github 上的提交和所有文件:https://github.com/Lopicl/android_samsung_thunderkernel_cooperve/commit/6385d6206119a3f8551e17bbeae130d3230965bf

编译时出现错误:

drivers/power/max8986-power.c:188: error: expected specifier-qualifier-list before 'if'

你能帮我吗? :)

提前致谢,马泰奥

最佳答案

当你的代码被编译时,前面有#的东西只会被处理一次;它们不会在运行时被处理。例如,这使得以下代码变得很糟糕:

if (max8986_power->isFullcharged == TRUE)
{
#define FULLY_CHARGED 1
}
else
{
#define FULLY_CHARGED 0
}

因为您实际上将 #define FULLY_CHARGED x 两次(预处理器忽略实际的 C 代码;不使用 if 检查)。

稍后,当您if (FULLY_CHARGED = 0)时,您不仅会尝试检查无效定义的宏,而且您的代码会尝试分配该值,而不仅仅是检查一下! IF FULLY_CHARGED 是一个变量,你的意思是你的代码是 if (FULLY_CHARGED == 0) (注意双等号,为了相等检查)。

也许您想将宏的定义更改为:

#if defined CONFIG_BLX
#define FULLY_CHARGED (max8986_power->batt_percentage == MAX_CHARGINGLIMIT) && (max8986_power->charging_status == POWER_SUPPLY_STATUS_CHARGING)
#else
#define FULLY_CHARGED (max8986_power->isFullcharged == TRUE)
#endif

并修复所有 IF 语句以检查是否相等而不是赋值。

关于c - 预期说明符限定符列表位于 'if' 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com