2013-03-27 38 views
0

在Visual C++中工作時,我經常注意到某些函數即使未包含頭文件也能正常工作。例如,tolower()即使在不包含ctype.h的情況下也可以使用。即使未包含頭文件,函數也能正常工作 - Visual Studio

當我參加在線編程比賽時,此行爲會對我造成問題,當我在計算機上運行該程序時,程序正常工作並且花花綠綠,但提交時出現function not defined錯誤。有什麼辦法可以阻止這種行爲?

回答

0

您的tolower()的聲明其實包含在內。這可能是因此在下列方式之一:

  • <cctype><ctype.h>包含在您已包含了頭(甚至標頭)之一。標準不禁止標準頭文件包含其他標準頭文件

  • 您所包含的頭文件之一具有該功能的聲明。例如,<algorithm>在其代碼中可能有int tolower(int);

你不能禁止這種行爲。你可以做的是學習函數必須被定義/聲明的位置,並且永遠不要依賴其他頭文件包含該頭文件。你知道tolower是在哪裏聲明的,所以每次使用這個函數時都包括<cctype>

0

可能的解釋:

  • 你有你的警告級別右轉下來。
  • 您正在使用包含正確文件的預編譯頭文件。
相關問題