如果我使用c89和c99编译以下程序,是否会有区别?我得到了相同的输出。这两者之间真的有区别吗?
#include <stdio.h>
int main ()
{
// Print string to screen.
printf ("Hello World\n");
}
gcc -o helloworld -std=c99 helloworld.c
vs
gcc -o helloworld -std=c89 helloworld.c
如果我使用c89和c99编译以下程序,是否会有区别?我得到了相同的输出。这两者之间真的有区别吗?
#include <stdio.h>
int main ()
{
// Print string to screen.
printf ("Hello World\n");
}
gcc -o helloworld -std=c99 helloworld.c
vs
gcc -o helloworld -std=c89 helloworld.c
//
注释不是 C89 的一部分,但在 C99 中可以使用。main()
掉出而没有返回任何值等同于 return 0;
,但在 C89 中不是这样的。引自N1256(pdf),5.1.2.2.3p1:
如果
main
函数的返回类型与int
兼容,则从主函数的初始调用返回等同于调用exit
函数,并将main
函数返回的值作为其参数;到达终止}
的main
函数返回值 0。
因此,在 C89 中,您的代码具有未定义的行为,在 C99 中则具有良好定义的行为。
//
注释可能是C99中值得采用的唯一部分。 -ansi -pedantic
会出现错误:main.c:5: error: expected expression before '/' token
。 - Carl Norum//
注释只捕获一行,这意味着它们不太可能被另一组注释无意中捕获或引起问题。此外,你关于 .
的论点有点傻;对于本质上相同的操作使用相同的运算符可能是一个好主意。 - Alice