我刚刚下载了 MSVC2013RC,因为我听说它会比以前的 MSVC 版本更好地处理 c 标准。所以我只是下载了它并测试了一些我在 Windows 平台上真正寻找的东西。
但是第一次测试已经让我非常失望。
#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
int testFunction(int iIn);
int main(int argc, char** argv)
{
int *TheKiddingBool;
TheKiddingBool= NULL;
TheKiddingBool= malloc(sizeof (int));
*TheKiddingBool= 17;
_Bool bWow;
bWow = true;
if (testFunction(*TheKiddingBool) == bWow)
{
printf("\r\nQAtest succesed!\r\n");
}
return 0;
}
int testFunction(int iIn)
{
return iIn;
}
比较testFunction(*TheKiddingBool) == bWow
返回false。这是 MSVC13 的 C 编译器中的一个非常困难的错误吗?
还是我只是明白这条线
6.3.1.2 布尔类型
§1 当任何标量值转换为_Bool时,如果该值比较等于0,则结果为0;否则,结果为 1。
c99 ISO/IEC 9899:TC3 大错特错?