void函数报错(警告菜单类型冲突)

img


这是为什么?同时有另外一个程序就只是警告没有报错?求帮忙解答一下(为什么要够三十个字?)如图(真不知道写什么了

你有多个c文件,是否都有这些函数啊

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7548267
  • 除此之外, 这篇博客: C语言笔记之函数中的 既然自创函数又没有返回类型的类型,则也可以引用以void为类型的函数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 例如求1!+2!+3!+…+n!

    函数:

    #include <stdio.h>     
    void sum(int n);         //调用函数//
    int main()
    {
    	int x;
    	scanf("%d",&x);
        sum(x);
    	
    }
    
    void sum(int n){       //函数部分//
    	int i,a=1;
    	for(i=1; i<=n; i++){
        a=i*a;
    	}	
    	printf("%d",a);
    }
    

    当函数没有返回类型时,就无发使用return返回a的值,所以需要在自创函数中实现接下来需要做的事情
    ,而此时sum函数里已经包含值,所以直接再函数中使用sum就可以得出值。一旦函数的返回值类型被定义为 void,就不能再接收它的值了。所以直接使用该函数即可。
    ##四.实际参数和形式参数,全局变量和局部变量。

    ###一.实际参数和形式参数

    1.形式参数就是在定义函数或过程的时候命名的参数。通俗讲就是一个记号。实际参数就是在执行时,调用函数或过程时,传递给函数或过程的参数。通俗讲就是实际值。参数就是一个可变量,它随着使用者的不同而发生变化。

    例如:

    在中学的时候学过sin(x)函数,这里的x就是形式参数,当你需要求1的正弦值时,你会使用sin(1),这里的1就是实际参数。4 形参和实参间的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参去之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。

    #include <stdio.h>  
    int sum(int n){   //这里的int n就是形式参数//      
    	int i,a=1;
    	for(i=1; i<=n; i++){
        	a=a*i;
    	}
    	return a;
    }
    int main()
    {
    	int x,y;
    	scanf("%d %d",&x,&y);
    	int result1=sum(x);     //当n=x时的阶乘//  //这里的x就是实际参数//
    	int result2=sum(y);     //当n=y时的阶乘//
    	int result3=result1+result2;
    	printf("%d",result3);
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    问题原因: 根据提供的参考资料和问题描述,void函数报错警告菜单类型冲突可能有以下几个原因: 1. 函数的返回类型和声明不一致。 2. 函数的参数类型和声明不一致。 3. 在调用函数时没有提供正确的参数类型。 4. 在函数定义之前,没有正确声明函数的原型。

    解决方案: 首先,根据问题补充提供的截图来看,问题的提示信息显示函数返回类型为void,但函数声明却显示了int。这说明函数的返回类型与声明不一致,所以第一个解决方案是将函数的返回类型修改为void。

    其次,警告菜单类型冲突可能是因为在函数调用时,使用了错误的参数类型。确保调用函数时传递的参数类型与函数定义的参数类型一致。

    最后,为了避免函数声明和定义的不一致带来的问题,可以在函数使用之前,对函数进行声明。函数的声明可以写在函数使用的位置之前,也可以写在头文件中。

    综上所述,以下是问题的解决方案示例代码:

    // 第一个问题的解决方案:修改函数返回类型为void
    void foo() {
        // 函数的实现
    }
    
    // 第二个问题的解决方案:确保函数调用的参数类型与函数定义的参数类型一致
    void bar(int num) {
        // 函数的实现
    }
    
    int main() {
        int num = 5;
        bar(num); // 调用函数时传递正确的参数类型
    
        return 0;
    }
    
    // 第三个问题的解决方案:在函数使用之前进行函数声明
    void baz(); // 函数声明
    
    int main() {
        baz(); // 函数调用
    
        return 0;
    }
    
    void baz() {
        // 函数的实现
    }
    

    如果以上解决方案不能解决问题,可能需要进一步分析问题代码并提供更多的信息才能找到准确的原因和解决方案。