«assert» не был объявлен в этой области »в MySQL ++ - PullRequest
6 голосов
/ 26 мая 2010

Я компилирую проект в XCode, где MySQL ++ включен и связан с ним. По какой-то причине я продолжаю получать следующую ошибку компилятора:

'assert' не был объявлен в этой области

происходит из cpool.h, заголовочного файла, который является частью MySQL ++. Кто-нибудь знает, почему это происходит?

РЕДАКТИРОВАТЬ: Для справки, MySQL ++ был установлен через Macports.

Ответы [ 3 ]

7 голосов
/ 26 мая 2010

Наиболее очевидным ответом будет то, что "assert.h" не включен или не найден в вашем пути включения. Другое объяснение состоит в том, что макрос assert был неопределенным в какой-то момент после включения заголовка.

Edit: так как вы говорите, что assert.h включен, и на данный момент мы предполагаем, что он найден, поскольку это стандартный заголовок, то у нас остается последняя возможность, о которой я говорил выше, то есть макрос не определено.

Поскольку cpool.h сам не будет этого делать, это должно быть в том случае, если assert.h был включен ранее вами или косвенно другим сторонним заголовком, и между этим и вашим включением в cpool.h происходит неопределенное событие. Это легко проверить, переместив ваш файл cpool.h в начало файла.

3 голосов
/ 09 марта 2016

В c ++ добавление заголовка cassert должно решить вашу проблему.

#include <cassert>
3 голосов
/ 09 июля 2013

Возможно, другая библиотека в вашем пути включения имеет другой файл "assert.h", и вы по незнанию включаете его вместо стандартного системы.

Я столкнулся с этой проблемой при написании приложения, использующего gstreamer на Mac OSX. Оказывается, что каталог включения gstreamer (/Library/Frameworks/GStreamer.framework/Headers) содержит файл «assert.h», который является нестандартным и не подходит для замены реального assert.h. Когда я добавил -I / Library / Frameworks / GStreamer.frameworks / Headers в мою команду компиляции, неожиданно мои источники, которые просто сказали «#include », где включая версию gstreamer. Это привело к сбою моей компиляции с той же ошибкой, что и вы.

...