GCC C编译器警告"警告:控制到达..."

时间:2016-11-26 09:51:35

标签: c gcc

使用" 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);
}

3 个答案:

答案 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),现在你只需要返回一些东西。