【问题标题】:Visual Studio C/C++ extension shows error message even if the code is correct [duplicate]即使代码正确,Visual Studio C/C++ 扩展也会显示错误消息 [重复]
【发布时间】:2021-07-20 05:01:19
【问题描述】:

即使代码正确,我的 Visual Studio 编译器也会显示错误消息。

即使是像这样的简单代码,

 #include<stdio.h>

int main(){
    int add(firstNumber, secondNumber){
        int result=firstNumber+secondNumber;
        return result;
    }
    int out=add(10,30);
    printf("%d", out);
    return 0;
}

它正在显示按摩,

应为 ';',第 4 行

标识符“out”未定义,第 9 行

代码运行良好。但是看到我的代码上的那些红线和错误消息令人沮丧。

注意:我使用 MinGW 作为 C 路径

【问题讨论】:

  • 你无法编译这段代码。
  • 标准 C 或 C++ 不支持嵌套函数(如您的 add)。一些编译器可能支持它们作为扩展。尝试将您的 add 函数移动到 main 之前和外部。
  • C 和 C++ 是不同的 编程语言。我建议学习 C,它更简单。阅读 Modern Cthis C reference 和 C 编译器的文档。我听说 mingw 是 GCC 编译器的一个变体:调用它时带有所有警告和调试信息:gcc -Wall -Wextra -g
  • 我会指出,除了嵌套函数的编译器扩展外,参数类型没有被识别。这也是编译器扩展吗?
  • 而且您上面的代码非常不正确

标签: c++ c visual-studio mingw function-definition


【解决方案1】:

问题是你在 main 中定义的函数,C 不支持在其他函数中定义的函数。您的代码应如下所示。

#include <stdio.h>
    

int add(firstNumber, secondNumber){
    int result=firstNumber+secondNumber;
    return result;
}

int main(){
    int out=add(10,30);
    printf("%d", out);
    return 0;
}

【讨论】:

    【解决方案2】:

    C 和 C++ 标准都不允许像本程序中那样嵌套函数定义

     #include<stdio.h>
    
    int main(){
        int add(firstNumber, secondNumber){
            int result=firstNumber+secondNumber;
            return result;
        }
        int out=add(10,30);
        printf("%d", out);
        return 0;
    }
    

    函数add在函数main中定义。

    此外,参数列表中的标识符firstNumbersecondNumber 没有类型说明符。

    您必须将函数定义移到 main 之外。例如

    #include<stdio.h>
    
    int add( int firstNumber, int secondNumber )
    {
        int result = firstNumber + secondNumber;
        return result;
    }
    
    int main( void ){
        int out=add(10,30);
        printf("%d", out);
        return 0;
    }
    

    在 C++ 中,您可以使用 lambda 表达式代替函数 add。例如

    #include <cstdio>
    
    int main()
    {
        auto add = []( int firstNumber, int secondNumber )
        {
            return firstNumber + secondNumber;
        };
    
        int out = add(10,30);
    
        printf( "%d\n", out );
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多