使用gcc
5.2.0,我注意到这段代码不会产生警告:
#include <stddef.h>
int function(void)
{
return NULL;
}
void procedure(void)
{
return NULL;
}
我使用了标志-Wall -Wextra -std=c99 -pedantic
并且正在运行archlinux。我不确定为什么这段代码可以正常工作gcc
,特别是因为clang
3.7.0 确实会生成警告。
我还尝试过使用gcc
4.9 或 4.7 等旧版本,它们都会生成警告。
警告是:
warning: return makes integer from pointer without a cast
和
warning: ‘return’ with a value, in function returning void
我应该提到我尝试在 Debian 上编译 gcc 5.2,结果是一样的。所以archlinux似乎不是问题。
理由是什么?我似乎在其他任何地方都找不到与此相关的任何东西。
谢谢!