“int main (vooid)”? How does that work?

前端 未结 4 765
迷失自我
迷失自我 2020-12-22 20:31

I recently had to type in a small C test program and, in the process, I made a spelling mistake in the main function by accidentally using vooid instead of

相关标签:
4条回答
  • 2020-12-22 21:12

    It's simply using the "old-style" function-declaration syntax; you're implicitly declaring an int parameter called vooid.

    0 讨论(0)
  • 2020-12-22 21:27

    It's valid code, because myprog.c contains:

    int main (vooid) // vooid is of type int, allowed, and an alias for argc
    {     
      return 42; // The answer to the Ultimate Question
    } 
    

    vooid contains one plus the number of arguments passed (i.e., argc). So, in effect all you've done is to rename argc to vooid.

    0 讨论(0)
  • 2020-12-22 21:33

    In C, the default type for a function argument is int. So, your program is treating the word vooid as int main(int vooid), which is perfectly valid code.

    0 讨论(0)
  • 2020-12-22 21:34

    It is only gcc -std=c89 -Wall -o qq qq.c and gcc -std=gnu89 -Wall -o qq qq.c don't emit a warning. All the other standards emit a warning about implicit type int for vooid.

    int main(chart) behaves the same way as does int main (vooid).

    return vooid; returns the number of command line arguments.

    I tested with gcc 4.4.5 on Debian testing system.

    0 讨论(0)
提交回复
热议问题