Название: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 05, 2016, 17:03 Доброго времени суток.
Есть у меня конструкция типа: Код: #define NAK 0x15 Компилятор MinGW на неё выдаёт предупреждение: Цитировать ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second Что он пытается мне этим сказать? Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: kambala от Август 05, 2016, 18:17 на какую строчку выдается предупреждение? прямо на дефайн?
Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 05, 2016, 23:54 Цитировать прямо на дефайн? даНазвание: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 05, 2016, 23:55 Собственно, у меня с десяток таких дефайнов, чтобы уйти от магических чисел. На каждый из них компилятор недовольно бурчит.
Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: PimenS от Август 06, 2016, 00:25 Компилятор MinGW на неё выдаёт предупреждение: Цитировать ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second MinGW какой версии? Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Igors от Август 06, 2016, 06:18 Попробуйте десятичное 21 или даже константу
Код
Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Bepec от Август 06, 2016, 09:15 На мой взгляд у вас где то имеется переменная NAK. Проверьте на всякий случай.
PS обычно ошибка ведёт на дефайн, но перед или после ошибки есть уточнения, не выделяемые ошибкой, но ведущие на строки где эта ошибка произошла. Это если в креаторе. Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Igors от Август 06, 2016, 09:27 На мой взгляд у вас где то имеется переменная NAK. Проверьте на всякий случай. Тогда однозначно ошибка (а не предупреждение). Если уж гадать - то, возможно, он понимает этот литерал как "unsigned", и когда дело доходит до присвоения - начинает вякать.Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 09:00 Цитировать возможно, он понимает этот литерал как "unsigned", и когда дело доходит до присвоения - начинает вякать. Нет, контекстная подсказка говорит, что это для него знаковый int.Может компилятору в принципе не нравится факт определения числа дефайном? В мануалах, к шарпу, например, прямым текстом написано, что не рекомендуется в таких случаях пользоваться дефайном - задавайте, мол, константы. Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 09:14 Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: GreatSnake от Август 08, 2016, 10:00 Прогони через препроцессор ( g++ -E file.cpp [options] > file.cpp.out ) и посмотри в выводе как раскрываются твои defines.
Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 10:28 Прогони через препроцессор ( g++ -E file.cpp [options] > file.cpp.out ) и посмотри в выводе как раскрываются твои defines. Я под виндойНазвание: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Brono от Август 08, 2016, 10:54 ... Я под виндой "Под виндой" Qt обычно добавляет терминал, через который это можно сделать. Посмотри в "Пуск->...->Qt->{версия Qt}->{версия компилятора}->Qt ... for Desktop ... (с иконкой терминала)". В запустившемся терминале можно вызвать g++ (Проверено только что на Win7) Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 12:01 "Под виндой" Qt обычно добавляет терминал, через который это можно сделать. Посмотри в "Пуск->...->Qt->{версия Qt}->{версия компилятора}->Qt ... for Desktop ... (с иконкой терминала)". В запустившемся терминале можно вызвать g++ (Проверено только что на Win7) Да, есть такое. Но при попытке запуска, указав файл cpp, где эти дефайны применяются получил: Цитировать имя_файла.h: fatal error :QObject: No such file or directory compilation terminated Пробовал копировать эти файлы в каталог с g++.exe и запускать команду оттуда. Тот-же результат Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: ssoft от Август 08, 2016, 12:25 Цитировать ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second Что он пытается мне этим сказать?Здесь дело не в определении #define, а в месте использования NAK в коде. Возможно, NAK участвует в арифметических операциях или операциях сравнения с типом, отличным от int, например short. Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 12:54 Здесь дело не в определении #define, а в месте использования NAK в коде. Возможно, NAK участвует в арифметических операциях или операциях сравнения с типом, отличным от int, например short. дефайны я по мере необходимости вставляю в QByteArray, как-то так: Код: QByteArray outData; Но, если бы дело было в этом, то компилятор ругался на все дефайны, а в моём случае, только на некоторые. Например, из группы: Код: #define CR 0x0D Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Igors от Август 08, 2016, 13:25 Но, если бы дело было в этом, то компилятор ругался на все дефайны, а в моём случае, только на некоторые. Некоторые = которые используются? Приведите к char напр Код Или в том месте где вставляете. Возможно он намекает что int может оказаться больше char Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: kai666_73 от Август 08, 2016, 13:30 Но, если бы дело было в этом, то компилятор ругался на все дефайны, а в моём случае, только на некоторые. Некоторые = которые используются? Приведите к char напр Код Или в том месте где вставляете. Возможно он намекает что int может оказаться больше char Код: #define NAK '\x15' Название: Re: Предупреждение ISO C++ says that these are ambiguous... Отправлено: Максим от Август 08, 2016, 13:34 Код: #define NAK '\x15' |