【发布时间】:2011-07-04 03:48:21
【问题描述】:
我有一个函数:void foo(bool boolParam = true)
我把它改成了:void foo(const char* charParam, bool boolParam = true)
为了避免搜索,我只是编译了代码,希望编译器会在由于错误的参数类型而调用函数的地方给出错误(或至少是警告),但编译器却默默地将 false 转换为 NULL并在没有错误或警告的情况下编译所有内容。这种行为正确吗?我知道 false 和 NULL 都是 0,但我认为编译器至少应该给出一些警告信息...
【问题讨论】:
-
嗯,它可能应该给你一些警告,但我想这是因为
NULL在windows.h中只是#defined 为0。不过,这是个好问题。 -
如果您将警告级别设置为 4(在项目设置中),您应该会收到一些警告。
-
@Volker:你确定 /W4 会对此产生警告吗?
-
Mac OS 上的 GCC 4.2 中的行为相同
-
@Cody Gray,我刚刚用 /W4 进行了测试,它没有产生任何警告
标签: c++ visual-studio visual-studio-2010 visual-c++