Russian Qt Forum
Сентябрь 21, 2024, 11:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Как найти ошибку в C/C++ коде? Видимо где-то забыл ; или " или }  (Прочитано 29459 раз)
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #30 : Декабрь 25, 2008, 16:56 »

Замечательно компилится на gcc как третей так и, кстати, четвертой ветки.
момент,
а 4-ка разве еще не числится  экспериментальной?
http://sourceforge.net/project/showfiles.php?group_id=2435
Testing: gcc-4.3.0-20080502-mingw32-alpha
« Последнее редактирование: Декабрь 25, 2008, 16:58 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
ритт
Гость
« Ответ #31 : Декабрь 25, 2008, 17:08 »

Замечательно компилится на gcc как третей так и, кстати, четвертой ветки.
момент,
а 4-ка разве еще не числится  экспериментальной?
http://sourceforge.net/project/showfiles.php?group_id=2435
Testing: gcc-4.3.0-20080502-mingw32-alpha

смущает суффикс "-alpha"? а если взглянуть шире (суффикс "-mingw32-alpha")?
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #32 : Декабрь 25, 2008, 17:27 »

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

Вот он Улыбающийся

Цитировать
...Это то же самое, что некоторые компилеры требуют прототипы функций, если реализация расположена ниже по коду, а другие не требуют. Казалось бы, невелика задача - пробежать код вперед и посмотреть наличие реализации. Так ведь нет - пиши прототип. Или когда синтаксический анализатор компилера не обнаруживает ошибки вида function()); а реалтаймовый анализатор IDE их видит мгновенно. Это уже вообще никуда не годится.
Записан

Собираю информацию по крупицам
http://webhamster.ru
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #33 : Декабрь 25, 2008, 17:38 »

смущает суффикс "-alpha"?
Да.
а если взглянуть шире (суффикс "-mingw32-alpha")?
все равно не вытанцовывается. подожду приставки -stable. или отсутствия приставок.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #34 : Декабрь 25, 2008, 17:42 »


причем совершенно без разницы, в какой последовательности будут прописаны функции.

А ты варнинги, варнинги включи (-Wall).

Ну таки да, будет удивляца - а чего это прототипов нет? Но соберется. И будет работать. Конечно, c++ в этом смысле строже - нет прототипа при вызове - досвидания. И пофигу, что он на самом деле есть дальше по коду. В этом смысле это более правильно, ибо есть стандарты. А наличие предупреждений, как считает создатель языка D - это следствие неправильного конструирования языка. В языке при компиляции должны выявляться только ошибки. Есть ошибки - нет результата. Нет ошибок - получи свой бинарь.

А то что gcc нашел эти функции в одном файле, ни о чем не говорит. А если функцию userfunc описать в другом файле. Он ее найдет?

Конечно, вопрос в том как прописывать. Прописывание в другом файле подразумевает, что будет *.h и *.c файл. В *.h - прототипы, в *.c - реализации. А так как мы экспериментируем "без прототипов", то можно прописать реализацию в h файл и подключить его. И все соберется. Да и почему бы собственно не собраться, если по факту компилится "результирующий" после препроцессинга файл.
Записан

Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
« Ответ #35 : Декабрь 25, 2008, 17:45 »

http://www.gnu.org/software/gcc/
Current release series: GCC 4.3.2
Status: 2008-11-03 (regression fixes and docs only).

а что ж ты вендой пользуешься - не ждёшь суффикса "-stable"? Улыбающийся
« Последнее редактирование: Декабрь 25, 2008, 18:09 от Константин » Записан
ритт
Гость
« Ответ #36 : Декабрь 25, 2008, 18:01 »

> Да и почему бы собственно не собраться...

действительно...main.c -> myfunc.h - почему бы не собраться? а ты включи гварды и сделай реализацию по-человечески (чтобы не компилить каждый раз один и тот же код) - соберётся?

> А наличие предупреждений, как считает создатель языка D - это следствие неправильного конструирования языка. В языке при компиляции должны выявляться только ошибки. Есть ошибки - нет результата. Нет ошибок - получи свой бинарь.

с каких пор машина стала умнее человека? и вто же время, с каких пор человеческий фактор перестал учитываться?

вот днём только ругался, разбирая чужой код (примерно такой):
Код:
	foreach($values as $key => $value)
{
if(is_array($value) && array_key_exists("VALUE", $value))
{
$values["~".$key] = $value;
$values[$key] = $value["VALUE"];
}
}
и ни единого ворнинга не будет, и даже будет работать...
язык без чётких стандартов только поощряет быдлокодеров, их становится всё больше, они сбиваются в кучки и начинают писать быдлопроекты...а потом сидишь и три дня патчишь это гомно Грустный
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #37 : Декабрь 25, 2008, 18:51 »

вот днём только ругался, разбирая чужой код (примерно такой):
Код:
	foreach($values as $key => $value)
{
if(is_array($value) && array_key_exists("VALUE", $value))
{
$values["~".$key] = $value;
$values[$key] = $value["VALUE"];
}
}
и ни единого ворнинга не будет, и даже будет работать...

С каких пор машина стала умнее человека? Чувак написал код, где в цикле меняет массив, который обходится данным циклом. Может, он именно это и хотел сделать? Улыбающийся

язык без чётких стандартов только поощряет быдлокодеров, их становится всё больше, они сбиваются в кучки и начинают писать быдлопроекты...а потом сидишь и три дня патчишь это гомно Грустный

Пускай пишут. Это гораздо лучше, чем высокий порог вхождения в язык, или высокий порог овладевания профессиональными методиками. Потому что, в таких случаях в языке и сообществе вокруг языка образуется застой. А еще хуже - под заказ "профессионалы" начинают писать программы примитивными методами "пишу на C++ в стиле фортрана".

Кстати, PHP (это же PHP?) замечательный язык. Код ясный, наглядный, простой. Потому им все и пользуются. И пускай. Я вон как трушный линуксоид начал писать проверялку баланса кавычек и кода на шелле. Обложился книгами, перерыл интернет, потратил полдня, в результате не смог написать нормальную функцию чтоб чотко работала и с кавычками, и со скобками. Кавычки надо экранировать. Скобки ненадо. Но надо в экранировать в регвырах. А кавычки - дважды. Короче плюнул в конце концов, и за пять минут написал все на php, открыв php.net. Только о потраченном времени пожалел.
Записан

Собираю информацию по крупицам
http://webhamster.ru
BRE
Гость
« Ответ #38 : Декабрь 25, 2008, 18:57 »

Только о потраченном времени пожалел.
Не жалей.  Подмигивающий
Опыт получил, не смотря на результат.
Записан
ритт
Гость
« Ответ #39 : Декабрь 25, 2008, 19:01 »

> Может, он именно это и хотел сделать?

именно это и хотел. вот только и на сях он будет делать то же самое, а на ворнинги по привычке положит...

пхп - ужасный язык! я мечтаю о том дне, когда шестой пыхпых повсеместно заменит пятый, а половина команды битрихсовта застрелятся от бессилия перед примитивами ооп...

а ты как трушный линухоид должен был написать скрипт на баше или хотя бы перле без всякий справочников...низачот Улыбающийся
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #40 : Декабрь 25, 2008, 19:27 »

Только о потраченном времени пожалел.
Не жалей.  Подмигивающий
Опыт получил, не смотря на результат.

Да, теперь я еще раз убедился, что писать автоматизировалку на баше ни в коем случае нельзя. Ибо неизвестно время, которое будет затраченно на разработку, а затык может быть на любом простом месте.

Чего только стоит

a=`expr 5+4`
echo ${a}

пойди разберись, как делать чтоб вычислялось математическое выражение, а не возвращало строку "5+4". В доке ничего по поводу не написано, спецключей нет. Должен возвращаться результат 9, а в реале - что пишешь, то и возвращает. Конечно, через час разобрался почему так. А вы, ребята, догадались? Улыбающийся


PHP для скриптования - наше все! Ибо C-подобный синтаксис.
Записан

Собираю информацию по крупицам
http://webhamster.ru
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #41 : Декабрь 25, 2008, 19:33 »

а что ж ты вендой пользуешься - не ждёшь суффикса "-stable"? Улыбающийся
я винду ставлю только тогда, когда на неё родимую второй первиспук выходит, не надо ля-ля...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
ритт
Гость
« Ответ #42 : Декабрь 25, 2008, 20:25 »

а я и не ля-ля... Улыбающийся
сдуру поставил на хрюшу сп3:
 - хехе, смешной какой - распаковался на флэшку...
 - о, да, "установите данное обновление для исправления ошибок в сп3" (пакет помечен датой с разрывом в несколько дней с сп3 - красота)
// пара ребутов
 - оо, глядите-ка, исправили один из самых старых багов в эксплорере
// через пять минут
 - где, сцуко, мои впа? ладно, настрою заново... ААА, где вкладка настройки?

вот так посидел пару дней без инета и...переустановил хрю с сп2 начисто

// ---
а гцц давно уже вполне стабилен...сейчас только по-мелочи правят, а активно работают над 4.4
Записан
Eugene Efremov
Гость
« Ответ #43 : Декабрь 26, 2008, 00:19 »

причем совершенно без разницы, в какой последовательности будут прописаны функции.
А ты варнинги, варнинги включи (-Wall).
А то что gcc нашел эти функции в одном файле, ни о чем не говорит. А если функцию userfunc описать в другом файле. Он ее найдет?

Вообще-то, он их и в одном файле не ищет. На самом деле происходит следующее:
Код:
usefunc.c: In function `main':
usefunc.c:5: warning: implicit declaration of function `userfunc'
usefunc.c: In function `userfunc':
usefunc.c:10: warning: implicit declaration of function `pow2'
usefunc.c: In function `main':
usefunc.c:6: warning: control reaches end of non-void function

Иными словами — наткнувшись на неопределенную функцию он просто заносит ее в таблицу имен. А дальше уже линкер разбирается. Т.е. если функция будет определена в другом файле — он это съест, а линкер ее найдет. И никакие хедеры для этого ему не понадобятся. Если функция вообще нигде не определена — компилятор съест, а линкер выдаст ошибку.

Что именно функции передается, будет ли она это принимать или сразу повиснет — при этом, естественно, не проверяется.

Это в С стандартное поведение, кстати. И одна из причин введения в C++ строгого контроля типов, потому что ошибок насажать с таким подходом — как нечего делать...
« Последнее редактирование: Декабрь 26, 2008, 00:23 от Eugene Efremov » Записан
BRE
Гость
« Ответ #44 : Декабрь 26, 2008, 09:37 »

Каюсь.  Улыбающийся
С момента выхода Borland C++, сишными компиляторами не пользовался....
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.