我主要有两种编译警告:
1.函数的隐式声明
in a.c
,它有char *foo(char *ptr1, char *ptr2)
, in b.c
,一些函数在foo
没有任何声明的情况下使用这个函数,我发现编译器似乎会将函数foo
返回值视为整数,甚至我可以传递一些变量少于或多于foo
函数声明
2. 枚举类型与其他类型混合
我的目标芯片是ARM11,看来即使我不解决这两种编译警告,我的程序也可以运行没有任何问题,但我相信这背后一定有一些风险。谁能给我一些很好的例子说明这两种编译警告会导致一些意想不到的问题?
同时,如果这两个警告有潜在的风险,为什么c编译器允许这些警告发生而不直接将它们设置为错误?背后有什么故事吗?