會議記錄:>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將自動為函數(shù)提供隱式聲明。隱式聲明為:
int printf();
這意味著printf是一個返回int且可以接受任意數(shù)量參數(shù)的函數(shù)。這個原型恰好可以為您服務。您應該#include <stdio.h>
最后,我要補充的是,當前的C標準(ISO / IEC 9899:1999或俗稱“C99”)都不會允許隱式聲明,并將該軟件將不符合。隱式聲明已刪除。我相信您的編譯器不支持C99。C ++還需要正確的原型,并且不執(zhí)行隱式聲明。

HUWWW
TA貢獻1874條經驗 獲得超12個贊
printf()
位于標準C庫中,并且鏈接程序始終將標準庫鏈接到您的可執(zhí)行文件,因此將找到任何標準函數(shù),并且不會出現(xiàn)鏈接問題。
未能包含適當?shù)念^會導致使用未原型化的函數(shù),這可能會導致問題,因為C編譯器假定該函數(shù)沒有原型返回,int
并且采用了可變數(shù)量的參數(shù)。因此,請始終包含標頭-這是您的安全柵欄。
- 3 回答
- 0 關注
- 885 瀏覽
添加回答
舉報
0/150
提交
取消