Я отлаживаю проект C ++ (Плагин для Adobe InDesign) для ошибки в OSX 10.9.5 с использованием XCode 4.6.2. Я столкнулся с очень странной проблемой в следующем коде: оператор if в следующем коде пропускается, даже если условие внутри него является действительным / истинным. Когда элемент управления достигает этого условия if, значение insertSinglePageElement равно 1, insertSinglePageElement является переменной bool16.
Он должен возвращать true, но код внутри блока if пропускается.
Кроме того, Xcode позволяет вам видеть соответствующий код сборки? Если да, то как?
bool16 insertSinglePageElement = kTrue;
...
//code
...
if(insertSinglePageElement == kTrue)
{
msgs = insertPageElementToPage(pe, pageData->grid, &pageName, pageData->presentationID, IDPageElementMap, true);
} else {
//Else Block
На изображениях выше показано значение переменной и отладчик, показывающий пропуск кода во втором изображении на один шаг от первого.
Причиной этой проблемы было то, что блок ИСТИНА, который XCode4.6.2 (использующий Apple LLVM 4.2) показал как истинный, был неверным. После включения оптимизации, X-Code начал показывать ее как False.