我使用atoi()
函数,我知道它是stdlib.h
的一部分。
那么,当我没有包含所需的头文件时,为什么以下代码正常工作?
#define _CRT_SECURE_NO_wARNINGS
#include <stdio.h>
int main()
{
char y[10] = "1234";
int z = atoi(y);
printf("%d\n", z);
return 0;
}
答案 0 :(得分:3)
如果编译器检测到正在使用的函数,而不是原型,则它将int
视为返回值。幸运atoi()
返回ìnt
,因此标准库默认链接,链接器成功解析符号atoi()
。
如果你已经让你的编译器记录警告(gcc的选项-Wall -Wextras -pedantic
),它会通知你atoi()
缺少的原型。
顺便说一句:应该是
int main(void)
至少。