这在C++中编译
if (char()=='a') {
}
我在CLion中打开一个非常老的项目后发现了这一点(耶,Jetbrains!)。有问题的代码试图做到这一点:
if (ProfileType()==GI_PROFILE_TYPE && forEdit &&
!user.AccessGranted(AK_GI_MOD))
return false;
假设ProfileType()是返回配置文件类型的成员方法。但它不是。它是这样的:
typedef char ProfileType;
本来应该是
GetType()
这段代码已经默默地编译了很多年(几十年?)并且从来没有真正正常工作过。我之所以发现这一点,是因为我注意到CLion给出了条件总是错误的警告。起初我怀疑警告,然后我怀疑导航到,然后我意识到这个警告实际上是正确的!这些年来,我在这个代码上运行了几个静态分析工具,直到现在都没有发现这个错误。我用gcc-wall构建,它也没有抱怨这个...
我的问题是:这实际上意味着什么:
char()
1条答案
按热度按时间jfewjypa1#
这是默认构造函数的语法,例如:
将调用MyClass的默认构造函数。对于像
char
这样的原始类型,它将初始化它们,例如。