函数’enterChar’的隐式声明[-Wimplicit-function-
发布时间:2020-12-16 10:11:58 所属栏目:百科 来源:网络整理
导读:关于我的C程序,我有两个问题: 1)在main()中,行C = enterChar();,N = enterNum();,leftJustifiedPic(C,N);,rightJustifiedPic(C,N);都给了我隐含的功能声明.那有什么意思?我已经习惯了 Java,在C代码方面它有点不同吗? 2)在方法enterChar()中,我得到’enter
关于我的C程序,我有两个问题:
1)在main()中,行C = enterChar();,N = enterNum();,leftJustifiedPic(C,N);,rightJustifiedPic(C,N);都给了我隐含的功能声明.那有什么意思?我已经习惯了 Java,在C代码方面它有点不同吗? 2)在方法enterChar()中,我得到’enterChar’错误的冲突类型,并再次不明白它意味着什么以及为什么会发生.我正在研究Eclipse(Cygwin-GCC),如果它与问题有关. 请问smb请告诉我这类错误和警告?我很感激! #include <stdio.h> #include <stdlib.h> int main() { printf("Welcome to the menu!"); printf("The menu is:n1. Enter/Change Charactern2. Enter/Change Numbern3. Print Triangle Type 1(Left Justified)n4. Print Triangle Type 2(Right Justified)n5. Quit"); printf("n"); printf("Now enter a number from the menu from 1 through 5: n"); int num = 0; scanf("%d",&num); char C; int N = 0; switch(num){ case 1: C = enterChar(); break; case 2: N = enterNum(); break; case 3: leftJustifiedPic(C,N); break; case 4: rightJustifiedPic(C,N); break; default: printf("Smth is wrong!"); } return 0; } char enterChar(){ printf("Enter your input as a character. Only 'C' and 'c' are allowed!n"); char input = 0 ; scanf("%c",&input); while(input != 'c' || input != 'C'){ if(input != 'C' || input != 'c'){ printf("You have to enter 'C' or 'c'. Try again!"); } } return input; } 解决方法
1)在使用它们之前没有声明这些函数,并且您使用的C语言具有“隐式函数声明”.这意味着函数被隐式声明为返回int并获取任何类型的任意数量的参数.
2)因为你有一个隐含的函数声明int enterChar(),它与定义char enterChar()冲突. 解决方案是在main()之前提供函数声明. char enterChar(); // and other function declarations int main(void) { .... } // function definitions char enterChar() { .... } 根据您的使用情况,使用更新版本的C可能值得调查,该版本没有这些隐式函数声明(例如C99或C11) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |