Visual Studio C/C++ 即使代码正确,扩展程序也会显示错误消息

Visual Studio C/C++ extension shows error message even if the code is correct

即使代码正确,我的 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;
}

正在显示按摩,

expected a ';', line 4

identifier "out" is undefined, line 9

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

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

问题是你在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;
}

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;
}