使用" gcc -ansi -Wall -pedantic conc.c"编译时,我有以下警告: 我做错了什么,请协助
谢谢,
conc.c:在函数'main'中: conc.c:8:1:警告:控制到达非空函数的末尾[-Wreturn-type]
#include <stdio.h>
void contract(char s1[], char s2[]);
int main()
{
char s1[] = "abcd";
char s2[] = "zzzz";
contract(s1,s2);
}
void contract(char s1[], char s2[])
{
char temp = 'a';
int i = 0;
while (s1[i] != '\0')
{
temp = s1[i];
i++;
}
if (i != 2)
{
s2[0] = s1[0];
s2[1] = '-';
s2[2] = temp;
}
printf ("\n The first char string is %s \n the shorten one is %s \n",s1,s2);
}
答案 0 :(得分:3)
您的主要功能并未明确返回任何内容。最后拍一个return 0;
,你应该没问题:
int main()
{
char s1[] = "abcd";
char s2[] = "zzzz";
contract(s1,s2);
return 0; /* Here! */
}
答案 1 :(得分:3)
-ansi
选项切换到ISO C90标准。那时候,main
函数必须返回一些东西。从C99开始,可以省略return语句。
答案 2 :(得分:3)
使用-ansi
(= C89)时,不获取主要返回0的默认行为,如果您没有返回任何内容 - 您定义了非void return type(int),现在你只需要返回一些东西。