MySQL Optimizer оптимизирует отправляемый вами запрос. К тому времени, когда это выполнено, это могло бы выглядеть довольно по-другому. Также идея о том, что линия столбец будет оставаться неизменной в течение этого времени, не является правильной.
Вот взгляд на то, как MySQL оптимизирует получаемые запросы:
http://dev.mysql.com/doc/internals/en/optimizer-primary-optimizations.html
Обновление 1:
Выше приведено мое предположение о том, почему отчеты об ошибках не так хороши. Я ни в коем случае не говорю, что отчеты об ошибках MySQL - это хорошо, это действительно плохо. Иногда я получаю ошибки, которые не имеют ничего общего с фактической ошибкой. Вот некоторые проблемы, с которыми столкнулся Питер Зайцев (отличный блог для людей, работающих с MySQL):
http://www.mysqlperformanceblog.com/2011/04/06/more-on-mysql- сообщения об ошибках / http://www.mysqlperformanceblog.com/2008/03/16/mysql-error-message-nonsenses/
Попробуйте:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
Макрос, определенный , проверяет, определено ли имя, и позволяет применять к результату логические операторы.
Вы должны использовать «если определено», а не 'ifdef'
#if defined _WIN32 || defined _WIN64
опечатка, вам нужен второй 'определенный', поэтому ваш тест не проходит. Думайте об этом как о «определенном _WIN32» как о единственном операторе, возвращающем истину / ложь
Я думаю, это должно быть возможно таким образом:
#if defined block1 || defined block2 /*or any other boolean operator*/
/*Code*/
#endif
Дополнительная информация здесь
Вы должны использовать #if
и специальный оператор определены
Использование определено:
#if defined(A) || defined(B)
#include <whatever.h>
#endif