项目场景:编译报错error: variable ‘time_ms’ set but not used [-Werror,-Wunused-but-set-variable]
解决方案:
当编译器预处理阶段遇到 #ifndef KERNEL 时,它会检查是否已经定义了 KERNEL 这个宏。如果未定义,说明当前是在编译用户空间代码。
在这种情况下,编译器会继续处理后续的代码,即定义 uint32_t time_ms; 这一行,因此在用户空间代码中会有一个名为 time_ms 的变量。
如果 KERNEL 已经被定义,说明当前是在编译内核代码。在这种情况下,由于 #ifndef KERNEL 条件不满足,编译器会跳过 uint32_t time_ms; 这一行,所以在内核代码中不会定义 time_ms 变量。
加入
#ifndef __KERNEL__
xxx
#endif
解决