会议记录:>type lookma.cint main() { printf("%s", "no stdio.h");}>cl lookma.cMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86Copyright (C) Microsoft Corporation. All rights reserved.lookma.cMicrosoft (R) Incremental Linker Version 8.00.50727.762Copyright (C) Microsoft Corporation. All rights reserved./out:lookma.exelookma.obj>lookmano stdio.h
3 回答
米脂
TA贡献1836条经验 获得超3个赞
您最初标记了此C ++,但它似乎是一个C程序。如果范围内没有原型(例如由于省略了#include <stdio.h>),C将自动为函数提供隐式声明。隐式声明为:
int printf();
这意味着printf是一个返回int且可以接受任意数量参数的函数。这个原型恰好可以为您服务。您应该#include <stdio.h>
最后,我要补充的是,当前的C标准(ISO / IEC 9899:1999或俗称“C99”)都不会允许隐式声明,并将该软件将不符合。隐式声明已删除。我相信您的编译器不支持C99。C ++还需要正确的原型,并且不执行隐式声明。
HUWWW
TA贡献1874条经验 获得超12个赞
printf()
位于标准C库中,并且链接程序始终将标准库链接到您的可执行文件,因此将找到任何标准函数,并且不会出现链接问题。
未能包含适当的头会导致使用未原型化的函数,这可能会导致问题,因为C编译器假定该函数没有原型返回,int
并且采用了可变数量的参数。因此,请始终包含标头-这是您的安全栅栏。
- 3 回答
- 0 关注
- 838 浏览
添加回答
举报
0/150
提交
取消