C ANSI Library项目解决方案颠覆bool值

时间:2013-01-06 21:05:09

标签: iphone ios xcode boolean stdbool

最奇怪的事情发生在我的一个XCode项目中。我有一个包含2个项目的解决方案,一个是用C编写的游戏内核库,另一个是使用C库的常见cocos2D / Box2d通用项目。

我为C库中分配的 bool 变量分配一个值,其中包含一个[... boolValue],它是从Objective C单例的plist文件中读取的。

type.bSolid  = [[tileInfo objectForKey:@"solid"] boolValue];

即使在bool变量上分配了计算值 true ,当我将其分配给另一个bool变量时,值总是 false ,我无法弄清楚为什么编译器会这样做。

for(i = 0; i < 4; i++)
        {
            //expression dismembrement in attempt to figure out what's happening
            c = pTiles[i]->cType;
            p = &pTiledMap->pTileTypes[c];
            b = p->bSolid;

            printf("%d %c %d %ld\n", i, pTiles[i]->cType, (bool)p->bSolid, sizeof(p->bSolid));

            if(pTiles[i] && !(bool)pTiledMap->pTileTypes[pTiles[i]->cType].bSolid)
            { 
                newDistance = distanceOverPoints2D(pTiles[i]->x, pTiles[i]->y, oDest->x, oDest->y);

                if(distance == 0 || newDistance < distance)
                {
                    distance = newDistance;
                    iBest = i;
                }
            }
        }

我不知道为什么b = p-&gt; bSolid在 b 上分配 false ,如果p-&gt; bSolid是<,则没有任何区别strong> true 或 false 。调试工具,手表等一切都可以,就像下一个屏幕截图所示。

enter image description here

我已经尝试将C ++编译器从Apple LLVM 4.1更改为LLVM GCC 4.3但没有成功,我用尽了我的想法,原因可能是什么。

我无法弄清楚为什么XCode会这样做。任何想法?我的Xcode是4.5.2。

0 个答案:

没有答案