c - 错误 C2143:语法错误:缺少“;” 在 C 中的“{”之前
问题描述
当我尝试使用嵌套函数编译以下 C 代码时:
#include <stdio.h>
int main() {
int five() {
return 5;
}
for (int i = 0; i < 10; i++) {
printf("%d ", five());
}
return 0;
}
我收到以下错误:
error C2143: syntax error: missing ';' before '{' in C
我正在使用 Visual Studio Community 2017 及其开发人员命令行,所以我的编译器是cl。
当我使用gcc编译程序时,我没有收到任何错误,所以我怀疑它与编译器有关,但是如何?
解决方案
编译器按“令牌”工作“令牌”。在int main() {
它看到标记int
、和之后five
,它们是函数 5 声明的一部分(返回并接受未指定但固定数量的参数)。这个声明是用令牌完成的,但是下一个可用的令牌是使整个事情语法无效。(
)
int
;
{
TLDR:嵌套函数在 C 中是非法的。
推荐阅读
- python-3.x - 如何访问将for循环值从一个函数返回到另一个函数pythin3?
- typescript - 如果对象类型是文字且键类型是字符串,如何处理对象属性?
- python - 获取自定义框架作为 qt-designer 插件
- c# - 更新数据库 accdb 后绑定源更新错误
- javascript - 提及的不和谐机器人静音命令
- r - 如何计算特定列中具有 NA 值的行数?
- python - 来自 JSON 的真实数据元素
- asp.net - 从 WCF 服务连接交换服务器时出错
- rest - Splunk REST API - 如何向已保存的搜索添加额外字段?
- python - 使用外键比较两个模型的字段。(用于在正确的类别下显示正确的产品)使用 django