![]() |
|
Модераторы: bsa |
![]()
|
|
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Востанавливаю давно забытый знания по С (не С++)
разбираю пример на С-99
смысл в том что получить compile error запускаю на gcc(oн врщде подддерживает стандард языка
но получаю waring .\src\Macro.c: In function 'main': ..\src\Macro.c:32:21: warning: comparison of distinct pointer types lacks a cast ..\src\Macro.c:33:7: warning: statement with no effect ..\src\Macro.c:35:4: warning: comparison of distinct pointer types lacks a cast ..\src\Macro.c:35:4: warning: statement with no effect ..\src\Macro.c:38:6: warning: unused variable 'array' ..\src\Macro.c:37:6: warning: unused variable 'j' ..\src\Macro.c:28:8: warning: unused variable 'e' вопросов 2 1) как получить error 2) для для чего вот это (void)(&_min1 == &_min2); ? профессор обьяснил чтобы был компайл эррор , но таково не происходит Это сообщение отредактировал(а) sergioK1 - 10.2.2011, 21:20 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а Вам не кажется, что приведенные ворнинги не относятся к коду приведенному выше ? |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
строка со сравнением и есть тест, который должен по идее кинуть ошибку, если типы разные.
Вот только typeof не имеет никакого отношения к стандарту. И gcc 4.4.5 вообще этот код не компилирует, ругаясь на typeof. |
|||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
у меня без настройки ключа --std 99 , c настройкой вместо type of нужно __typeof__
вот его выдает warning: comparison of distinct pointer types lacks a cast а почему собвено должен быть error адресс сравниваеться с другим , какая разнича что по этотим адресам сидит ? |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
В вашем примере не используется ничего из С99, а используется все из расширений gcc
По поводу ошибки (а не варнинга) - она будет в С++ режиме трансляции. С++ не разрешит сравнивать указатели разных типов. |
|||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Я прописываю
получаю for' loop initial declarations are only allowed in C99 mode добавляю-std=c99 компилтруется как надо , как это понять ? расширение стандарта не поддерживает стандард ? Как вы различауте где расширение а где стандард? а что нибудь другое ? понятно что из опыта, а если такого нет ? |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Это С++ (или С99)
А расширения описаны в документации на компилятор (для gcc запустите info gcc - там ссылки на поддерживаемые стандарты и расширения находятся прямо на первой же странице) |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
стандарты бывают разные.. под словом стандарт обычно подразумевают стандарт языка - набор правил общих для всех компиляторов.. а есть еще стандарт расширения стaндарта языка, т.е. набор правил для конкретного компилятора.. так как стандарты бывают разные и компилятор, поддерживающий несколько из них, имеет опции для выбора нужного.. P.S. сами стандарты языка тоже бывают разные Это сообщение отредактировал(а) mes - 11.2.2011, 14:24 |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
info gcc где запустить в сommand line ? так выдает nо such file and directory. cсылки на стандарты Я не очень понял где они видны ? на первой странице форума ??? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
sergioK1, стандарт денег стоит.
Вот здесь есть названия необходимых стандартов. Вбиваешь в гугл и находишь. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Угу, в Linux'овой консоли Догадываюсь, что у вас Windows и пакет info не установлен Посмотрите тут На первой странице Info gcc |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |