我是编程的noob。 我的老师编译了一个没有任何预处理指令的程序,它执行并显示输出。 这只是一个你好世界计划。 我很困惑,没有指令如何能够执行“printf”功能。程序编译并执行无头文件turbo C++
回答
在“经典”ANSI C(C89/90)中,只要您仔细地提供适当类型的参数,就可以在不预先声明它们的情况下调用非可变函数。所以,如果一个人做得正确,可以编写一个不包含任何标准头文件的正式有效的C89/90程序。例如。
int main()
{
puts("Hello World");
return 0;
}
在现代C这是不可能的,因为从C99开始的所有功能都被调用之前声明。现在
,主叫printf
甚至没有在C89/90的预声明它(与原型)造成未定义的行为,因为printf
是一个可变参数函数。所以,如果你的老师做了这样的事情
int main()
{
printf("Hello World\n");
return 0;
}
,那么他/她仍然有很多东西需要学习有关C.这C89/90程序是无效的,即使它编译,执行和显示输出“看着罚款“给你。
但是,你仍然可以预先声明函数手动
int printf(const char *format, ...);
int main()
{
printf("Hello World\n");
return 0;
}
,并与不使用任何预处理指令有效的C89/90的程序结束。虽然这样做并不是一个好的编程习惯。
我在TurboC++上试过了你的“puts”代码,但是它显示了一个错误,说明了puts必须有一个原型。 –
@AlphaMineron首先,您必须确保您将代码编译为C,而不是C++。其次,它必须是“旧”C-C89/90。 – AnT
哦,我明白了............ –
- 1. 用dbus头文件编译C程序
- 2. C++ - 预编译头文件
- 3. 编译头文件
- 4. 在DOS提示符下编译Turbo C程序?
- 5. C++程序无法编译
- 6. 无法编译C程序
- 7. 用C++编译并准备好可执行文件
- 8. 如何编译包含LLVM API头文件的C++程序?
- 9. 如何在具有头文件的gcc中编译C程序?
- 10. 编译一个C++程序头文件(新手)
- 11. C++头文件编译器问题(Sales_item.h)C++头文件示例
- 12. Firebase插件和并发执行程序Java编译错误
- 13. 编译并执行一个jar程序包的java程序
- 14. 头文件中的类 - 无法编译?
- 15. C编译器无法创建可执行文件
- 16. MSYS SDL-2.0“C编译器无法创建可执行文件”
- 17. 无法在Linux中使用自定义头文件编译C++程序
- 18. 检查编译器是否为Turbo C++
- 19. 编译大型头文件C++
- 20. C++重构预编译头文件
- 21. 预编译标准库头文件 - C++
- 22. Objective-C++预编译头文件
- 23. 我正在编译.c文件并获取可执行文件。如何在Windows 8中执行exe文件
- 24. 将MATLAB 2009b应用程序编译为Windows可执行文件
- 25. 编译并运行Java应用程序中的C++程序
- 26. 使用Masm和ConTEXT编译并运行程序集文件
- 27. 如何将C文件编译为可执行文件(.exe)?
- 28. 在Java程序中编译并运行Scala文件
- 29. Eclipse - 编译和执行程序
- 30. 程序编译但不执行
为什么不呢?你需要什么预处理器?实际的编译阶段编译文件时没有任何预处理器东西 –
'printf'?所以老师实际上使用了'printf'。 – AnT