在 Visual C++ 中工作时,我经常注意到某些函数即使在它们的标头未包含在内时也能正常工作。例如,tolower()
即使ctype.h
不包括在内也可以工作。
当我参加在线编程比赛时,这种行为给我带来了问题,当我在我的计算机上运行该程序时运行良好且花花公子,但在提交时出现function not defined
错误。有没有办法阻止这种行为?
在 Visual C++ 中工作时,我经常注意到某些函数即使在它们的标头未包含在内时也能正常工作。例如,tolower()
即使ctype.h
不包括在内也可以工作。
当我参加在线编程比赛时,这种行为给我带来了问题,当我在我的计算机上运行该程序时运行良好且花花公子,但在提交时出现function not defined
错误。有没有办法阻止这种行为?
可能的解释:
您的声明tolower()
实际上包括在内。可能是以下方式之一:
<cctype>
或<ctype.h>
包含在您包含的标题之一(甚至是标准标题)中。该标准不禁止标准标头包含其他标准标头
您包含的标题之一具有该功能的声明。例如,<algorithm>
可能int tolower(int);
在其代码中的某个位置。
您不能禁止这种行为。您可以做的是了解必须在哪里定义/声明函数,并且永远不要依赖其他标头包含该标头。你知道在哪里tolower
声明,所以<cctype>
每次使用这个函数时都要包含。