我是編程的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. 編譯並執行Qt應用程序
- 2. Objective C程序編譯和執行
- 3. C++ - 預編譯頭文件
- 4. Turbo C在執行C冒泡排序程序時掛起
- 5. 編譯的C文件不可執行
- 6. cygwin新手編譯並運行c程序文件
- 7. Sublime Text - 編譯並運行C程序
- 8. 編譯並運行程序
- 9. 編譯頭文件
- 10. 在DOS提示符下編譯Turbo C程序?
- 11. C++程序無法編譯
- 12. 無法編譯C程序
- 13. 無法編譯C++程序
- 14. 用C++編譯並準備好可執行文件
- 15. 試圖編譯C++應用程序,找不到頭文件
- 16. 編譯一個C++程序頭文件(新手)
- 17. 如何在具有頭文件的gcc中編譯C程序?
- 18. 我是否需要在C程序中編譯頭文件?
- 19. C程序編譯錯誤(帶頭文件)
- 20. 如何編譯包含LLVM API頭文件的C++程序?
- 21. C++頭文件編譯器問題(Sales_item.h)C++頭文件示例
- 22. 編譯並執行一個jar程序包的java程序
- 23. Firebase插件和併發執行程序Java編譯錯誤
- 24. 頭文件中的類 - 無法編譯?
- 25. MSYS:錯誤c編譯器無法創建可執行文件
- 26. C編譯器無法創建可執行文件 - Cygwin/MiniGW
- 27. MSYS SDL-2.0「C編譯器無法創建可執行文件」
- 28. C編譯器無法創建可執行文件
- 29. C編譯器無法創建可執行文件Ubuntu 10.04 LTS
- 30. 用C程序編寫頭文件?
爲什麼不呢?你需要什麼預處理器?實際的編譯階段編譯文件時沒有任何預處理器東西 –
'printf'?所以老師實際上使用了'printf'。 – AnT