В настоящее время я в процессе переноса ряда файлов классов из нашей исходной среды Visual Studio в Qt Creator (версия 3.4.2).
Я сделал несколько изменений, чтобы учесть различия в компиляторе (в MinGW). Одна вещь, которая озадачивает меня, состоит в том, что IDE сообщает об определенной ошибке (красное подчеркивание), но все еще хорошо компилируется.
Я уверен, что проблема связана с использованием reinterpret_cast<T>
где T
это глобальное пространство имен.
Например, следующая строка будет отображаться как некорректная в IDE, но все равно будет компилироваться:
::GetWindowThreadProcessId(window, reinterpret_cast<::LPDWORD>(&processId));
Подсказка гласит:
ожидаемый ‘;’ получил ‘:’
Если я изменю код для удаления ::
от LPDWORD
подсветка синтаксиса исчезает. Это будет хорошо в IDE:
::GetWindowThreadProcessId(window, reinterpret_cast<LPDWORD>(&processId));
Я подозреваю, что это ошибка в IDE. Это безопасное предположение?
Я не планирую менять стиль кода для использования глобального пространства имен.
Благодаря комментарию Лисяруса, я смог обнаружить, что это действительно ошибка в QT Creator. Уже есть сообщение об ошибке Вот.
Как я уже упоминал в этом вопросе, ошибка не мешает вам компилировать код. Вы можете, если хотите, добавить пробел между <
а также ::
,