Flutter+Xcode14.3运行iOS项目遇语义错误:混合声明与代码不符C99前标准
解决Flutter iOS项目在Xcode14.3中出现的C99标准兼容错误
问题原因
该错误是由于Xcode默认配置的C语言标准低于C99,而C99之前的语法规则不允许在代码执行语句之后声明变量,要求变量声明必须放在代码块的起始位置。
解决方法
修改Xcode项目语言标准配置
- 打开Flutter项目iOS目录下的
Runner.xcworkspace文件 - 在左侧项目导航栏选中项目根节点
- 切换到
Build Settings标签,在搜索框输入C Language Dialect - 将对应的值修改为
GNU99或C99(推荐GNU99,兼容更多语法扩展) - 同步检查
C++ Language Dialect,设置为GNU++98或更高版本
- 打开Flutter项目iOS目录下的
修正原生代码的变量声明位置
如果报错来自自定义的iOS原生代码或第三方插件的原生代码,找到对应文件,将变量声明移至代码块开头:
错误示例:void demoFunc() { NSLog(@"test"); int num = 5; // C99前标准不允许代码中间声明变量 }修正后:
void demoFunc() { int num = 5; // 变量声明放在代码块起始位置 NSLog(@"test"); }更新Flutter依赖插件
部分第三方插件的原生代码可能未适配Xcode14.3的编译标准,尝试更新相关插件到最新版本,执行flutter pub get后重新编译项目
内容的提问来源于stack exchange,提问作者Mohd Shoaib Khan
相关产品推荐
相关产品推荐

