Информация об изменениях

Сообщение Re[2]: MSVC2022/2026 не видит макрос, вернее, пытается его к от 29.11.2025 11:57

Изменено 29.11.2025 12:35 Marty

Re[2]: MSVC2022/2026 не видит макрос, вернее, пытается его как-то трактовать...
Здравствуйте, B0FEE664, Вы писали:

M>>Вот прямо перед использованием проверяю его существование — останавливается по ошибке "UMBA_RULE_OF_FIVE is defined before use". Отключаю проверку — получаю "Function definition for 'UMBA_RULE_OF_FIVE' not found."

M>>Что за бред?

BFE>Скорее всего разный (и условный) порядок подключения инклюдов в разных файлах компиляции.


Порядок разный, да. Но не условный. Хидер, в котором объявлен макрос, защищён только #pragma once. Он может где-то ещё включаться, но точно включается в том файле, где происходила ошибка

Более того, я проверял определение через #if defined() — срабатывало, и останавливалось там на #error. Если #error закоментировать — то опять ошибка.

Решил попытаться локализовать проблему, сделал тестик, там подключается только один мой файл, объявил структуру, в которой только мой макрос и всё — ошибка воспроизводится. Сделал второй тест — убрал инклюд, вставил непосредственно его содержимое — ошибка воспроизводится. Потом ещё приседал по разному — и вдруг ошибка перестала вопроизводится.

У меня проект на симейке. Закрыл студию, удалил все файлы, перегенерил заново, запустил, собираю и так и сяк — ошибка не воспроизводится. Всё работает и в 2022 и в 2026ой студиях.

Еще была куча предупреждений, тип pBuf используется до инициализации. Но как же до, когда тремя строчками выше pBuf явно присваивается.

И вообще куча предупреждений была. Кое-какие при этом были полезными. А сейчас всё собирается с нулём ошибок, предупреждений, и даже сообщений.

Что это было, я так и не понял, но всё заработало.

Да, только только поставил 2026ую студию, комп не перегружал. Но и перед тем, как всё заработало — тоже не перегружал. В общем, сижу в непонятках
Re[2]: MSVC2022/2026 не видит макрос, вернее, пытается его к
Здравствуйте, B0FEE664, Вы писали:

M>>Вот прямо перед использованием проверяю его существование — останавливается по ошибке "UMBA_RULE_OF_FIVE is defined before use". Отключаю проверку — получаю "Function definition for 'UMBA_RULE_OF_FIVE' not found."

M>>Что за бред?

BFE>Скорее всего разный (и условный) порядок подключения инклюдов в разных файлах компиляции.


Порядок разный, да. Но не условный. Хидер, в котором объявлен макрос, защищён только #pragma once. Он может где-то ещё включаться, но точно включается в том файле, где происходила ошибка

Более того, я проверял определение через #if defined() — срабатывало, и останавливалось там на #error. Если #error закоментировать — то опять ошибка.

Решил попытаться локализовать проблему, сделал тестик, там подключается только один мой файл, объявил структуру, в которой только мой макрос и всё — ошибка воспроизводится. Сделал второй тест — убрал инклюд, вставил непосредственно его содержимое — ошибка воспроизводится. Потом ещё приседал по разному — и вдруг ошибка перестала вопроизводится.

У меня проект на симейке. Закрыл студию, удалил все файлы, перегенерил заново, запустил, собираю и так и сяк — ошибка не воспроизводится. Всё работает и в 2022 и в 2026ой студиях.

Еще была куча предупреждений, типа pBuf используется до инициализации. Но как же до, когда тремя строчками выше pBuf явно присваивается.

И вообще куча предупреждений была. Кое-какие при этом были полезными. А сейчас всё собирается с нулём ошибок, предупреждений, и даже сообщений.

Что это было, я так и не понял, но всё заработало.

Да, только только поставил 2026ую студию, комп не перегружал. Но и перед тем, как всё заработало — тоже не перегружал. В общем, сижу в непонятках