首页 文章

GCC C编译器警告“警告:控制到达......”[重复]

提问于
浏览
-2

这个问题在这里已有答案:

在使用“gcc -ansi -Wall -pedantic conc.c”编译时,我有以下警告,我做错了,请协助

谢谢,

conc.c:在函数'main'中:conc.c:8:1:警告:控制到达非void函数的结尾[-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 回答

  • 3

    当使用 -ansi (= C89)时,如果你没有返回任何东西,你就不会得到main返回0的默认行为 - 你定义了一个非void返回类型(int),现在你只需要返回一些东西 .

  • 3

    您的main函数没有显式返回任何内容 . 最后打一个 return 0; 你应该没问题:

    int main()
    {
        char s1[] = "abcd";
        char s2[] = "zzzz";
        contract(s1,s2);
        return 0; /* Here! */
    }
    
  • 3

    -ansi 选项切换到ISO C90标准 . 那时候, main 函数必须返回一些东西 . 从C99开始,可以省略return语句 .

相关问题