在Visual C++中工作時,我經常注意到某些函數即使未包含頭文件也能正常工作。例如,tolower()
即使在不包含ctype.h
的情況下也可以使用。即使未包含頭文件,函數也能正常工作 - Visual Studio
當我參加在線編程比賽時,此行爲會對我造成問題,當我在計算機上運行該程序時,程序正常工作並且花花綠綠,但提交時出現function not defined
錯誤。有什麼辦法可以阻止這種行爲?
在Visual C++中工作時,我經常注意到某些函數即使未包含頭文件也能正常工作。例如,tolower()
即使在不包含ctype.h
的情況下也可以使用。即使未包含頭文件,函數也能正常工作 - Visual Studio
當我參加在線編程比賽時,此行爲會對我造成問題,當我在計算機上運行該程序時,程序正常工作並且花花綠綠,但提交時出現function not defined
錯誤。有什麼辦法可以阻止這種行爲?
您的tolower()
的聲明其實包含在內。這可能是因此在下列方式之一:
<cctype>
或<ctype.h>
包含在您已包含了頭(甚至標頭)之一。標準不禁止標準頭文件包含其他標準頭文件
您所包含的頭文件之一具有該功能的聲明。例如,<algorithm>
在其代碼中可能有int tolower(int);
。
你不能禁止這種行爲。你可以做的是學習函數必須被定義/聲明的位置,並且永遠不要依賴其他頭文件包含該頭文件。你知道tolower
是在哪裏聲明的,所以每次使用這個函數時都包括<cctype>
。
可能的解釋: