简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2. ISO C90用法标准介绍
- 🌻3.解决方案
- 错误代码
- 修改后代码:
🌻1.前言
本篇目的:Android内核之解决报错:error: ISO C90 forbids mixing declarations and code
🌻2. ISO C90用法标准介绍
- 在编程中,特别是在使用C或C++语言时,我们经常会遇到编译器错误。其中一个常见的错误是 “error: ISO C90 forbids mixing declarations and code”。这个错误是由于在C90标准中,声明和代码混合使用是不被允许的。
- C90标准是C语言的第一个国际标准,于1990年发布。在这个标准中,规定了声明和代码必须分开编写。也就是说,一个函数中不能同时出现声明和代码。如果在一个函数中既有声明又有代码,编译器就会报错 “error: ISO C90 forbids mixing declarations and code”。
- 举个例子,如果我们有一个函数,我们在函数的声明和定义之间混合了代码,就会触发这个错误。
void my_function(); // 声明
{
int a = 1;
my_function(); // 代码
}
void my_function() // 定义
{
int b = 2;
}
- 在上面的例子中,我们在函数声明和定义之间插入了一些代码。这段代码中调用了my_function函数。编译器会报错 “error: ISO C90 forbids mixing declarations and code”,因为声明和代码被混合在一起。
- 为了解决这个问题,我们需要将声明和代码分开。在上面的例子中,我们可以将声明和代码分开,如下所示:
void my_function(); // 声明
void my_function() // 定义
{
int b = 2;
}
{
int a = 1;
my_function(); // 代码
}
- 在这个修改后的例子中,我们首先声明了my_function函数,然后定义了它,最后在代码块中调用了它。这样,编译器就不会报错 “error: ISO C90 forbids mixing declarations and code” 了。
- 需要注意的是,C99标准已经放宽了这一限制,允许声明和代码混合使用。但是在C90标准中,这一限制仍然存在。因此,如果你正在使用C90标准编译器,你需要遵守这一规定。
🌻3.解决方案
错误代码
......
case BC_REPLY_SG: {
printk(KERN_ERR "xxx--------------->%s, %s(), line = %d\n",__FILE__,__FUNCTION__,__LINE__);
struct binder_transaction_data_sg tr;
}
修改后代码:
case BC_REPLY_SG: {
struct binder_transaction_data_sg tr;
printk(KERN_ERR "xxx--------------->%s, %s(), line = %d\n",__FILE__,__FUNCTION__,__LINE__);
}