atoi()函数如何在不包含标准库的情况下工作?

时间:2014-02-19 18:27:18

标签: c

我使用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;
}

1 个答案:

答案 0 :(得分:3)

如果编译器检测到正在使用的函数,而不是原型,则它将int视为返回值。幸运atoi()返回ìnt,因此标准库默认链接,链接器成功解析符号atoi()

如果你已经让你的编译器记录警告(gcc的选项-Wall -Wextras -pedantic),它会通知你atoi()缺少的原型。


顺便说一句:应该是

int main(void)

至少。