![]() |
|
![]() ![]() ![]() |
|
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
есть, но видимо компилятор игнорирует атрибут |
|||
|
||||
Bodro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 27.1.2006 Где: Россия, г. Рязань Репутация: 2 Всего: 4 |
Вот смотрите - у нас есть файл, который должен себя вести по-разному, в зависимости от некоторых условий, например, работает ли он как в составе библиотеки или как файл в отдельной программе. Когда у вас 1000 строк кода, вы можете написать программу вполне нормально, а когда у вас за 10 лет работы сменилось порядка 20-30 программистов и код у вас занимает 100 000 строк или более, то проще разобраться с конкретной функцией (методом) и переработать её, чем переделывать весь проект, ковыряясь в огромном количестве кода. Общаяя проблема сложных систем в том, что их нельзя понять в полном объёме и можно работать только лишь с какой-то частью. Для этого и существуют куча всяких тонкостей, в том числе и глушение ворниноов. Когда задача выходит за пределы написания конкретного драйвера или конкретной утилиты и превращается или в написание прошивки для устройства (вместе с ОС) или, например, в написание бизнес системы (например, VKernel Capacity Analyser - это просто пример), то разобраться в этой системе становится просто невозможно. А в простом случае, просто с помощью подобных конструкций можно глушить необрабатываемое значение от функций. К сожалению, не могу вам привести самый наглядный пример с компилятором STM для микропроцессора STi 5100, т.к. его просто нет под рукой - там нужно было или обрабатывать вообще всё или глушить, иначе предупреждения вам просто не дадут понять действительно проблемное место. Но, я надеюсь, что вы мне просто поверите, что есть такие ситуации, когда нужно использовать подобный подход. Все кто мне возразил просто не обладают достаточным опытом напсания кроссплатформенного ПО под разные микропроцессоры, микроконтроллеры, под управлением различных ОС, и не всегда даже что есть ОС. В этом вины, конечно, никого нет. Просто мне не нравится, что люди начинают нападать, не представляя о чём идёт речь. Если вы не понимаете - это ничего страшного. Главное - желание изучать и находить истину! Все мы люди и все мы ошибаемся. Общайтесь с разными программистами. Например, очень много интересно узнаете на оверфлоу, на генту, на ЛОРе, на винграде в разделе кроссплатформенного ПО и программирование под Unix. Ищите истину! alexvs11 поверьте, такие ситуации встречаются сплошь и рядом. Особенно, когда вам достаётся огромный чужой код. Если бы такой необходимости не было, разработчики библиотек Boost, Qt и прочих не стали бы придумывать подобные механизмы. Просто поверьте. Примеров я вам привёл предостаточно, в одном из них вы сами убедились, что однозначности нет. Изучайте код, пробуйте, смотрите. Старайтесь найти истину, а не упираться в стену и принимать всё в штыки. |
|||
|
||||
volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
Это ж надо сначала придумать всю эту ахинею, а потом искать ключи компиляции, при которых эта ахинея бы имела хоть какой-то смысл. У вас, имхо, проблемы с причинно-следственной связью, друзья. ![]()
Оператор присваивания возвращает значение, которое мы не используем. Оператор присваивания - это тоже функция. обычное:
operator= в языке С++ возвращает значение, которое мы в данном случае не используем. На весь остальной бред отвечать ни сил, ни желания нет, сорри. Есть faq для новичков, поищите по форуму, там все есть. |
||||||
|
|||||||
Bodro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 27.1.2006 Где: Россия, г. Рязань Репутация: 2 Всего: 4 |
Вам сколько лет, простите узнать? И какой у вас опыт программирования? вообще, вы чем занимаетесь? Просто, может смысле не имеет с вами общаться?
UPD Надоело! От ваших оскорблений я устал! Думайте что хотите! Хотите что б я сказал что я не прав? Пожалуйта! Профессионалы, кто прочитает данный топик всё поймут. А перед вами распинаться я больше не хочу. alexvs11 запускает код, адекватно комментирует, интересуется. А вы ведёте себя как тупой баран, котрый упёрся рогами в стену и совершенно не слушает что ему говрят! Я признАю свою неправоту, если вы докажете что за 15 лет моей работы всё что написал и видел было мифом! Что для вас не авторитет никто - я понимаю! Вы не написали ни строчки кода, не сделали ничего, чтобы хоть как-то опровергнуть! Вы ТРОЛЬ! А я тупой осёл, кто повёлся на вас! И воноват на 100% я!!! Сколько раз зарекался с холиварщиками не общаться и опять повёлся! Доказать что-то тупому барану просто нереально, к тому же если этот баран ничего не возражает, а только льёт ###! Добавлено @ 00:16 Самы поганый топик, судя по всему! Среди русскоязычных форумов, винград был не на последнем месте, но вы его обосрали до предела! Хоть бы одно доказательство! Троль и холиварщик! Добавлено через 11 минут и 20 секунд
УЧИ МАТЧАСТЬ!!! Добавлено через 14 минут и 34 секунды Почитай про перегрузку!!! УЧИ МАТЧАСТЬ И ДУМАЙ ГОЛОВОЙ!!! Это сообщение отредактировал(а) Bodro - 30.6.2012, 00:17 |
|||
|
||||
Bodro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 27.1.2006 Где: Россия, г. Рязань Репутация: 2 Всего: 4 |
||||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
||||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Господа, остыньте немного. Не стоит обвинять Bodro в наведении тени на плетень и написании бреда. По существу он абсолютно прав!
Проблема в том, что написание действительно кросс платформенного кода вещь весьма трудоемкая. Размер текста действительно сильно возрастает. С другой стороны действительно кросс платформенный код требуется очень редко, поэтому обычно ограничиваются определенным набором платформ и компиляторов, и делают код, который бы успешно компилировался на них. Невозможно охватить все на свете, поэтому вопрос в том, что мы пытаемся охватить нужно ставить явно. Исходный вопрос был про Билдер, так что в данном случае вопрос о кросс платформенности явно не стоял, и (void) перед printf явный оверкил (Билдер этого не требует, а перенести программу с Билдера на другой компилятор невозможно по причине сильного отличия его диалекта С++ от всех остальных). Кстати, по поводу ругани gcc на игнорирование результата от fread. Это не является встроенной реакцией gcc на игнорирование возвращаемого значения, а является явно затребованной (с помощью прагмы) реакцией от разработчика libc Еще кстати, есть уж очень нестандартные компиляторы С, у которых например размер char'а - 2 байта (хотя sizeof(char) и у них 1), вполне понятно, что кросс платформенные программы на таком компиляторе скорее всего не заработают, какими бы они хорошими не были |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
xvr, я рад что адекватный человек ответил, и можно поговорить без хамства. вопрос.
Является ли данный код кроссплатформенным ? и если нет, то что нужно здесь сделать. чтобы он стал действительно кроссплатформенным ? (кода не много, так что труда думаю не составит) Это сообщение отредактировал(а) volatile - 1.7.2012, 23:31 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
С точки зрения стандарта - является. Дальнейшее зависит от того, какими именно компиляторами мы собираемся это компилить. Некоторые могут потребовать return 0; в конце main Некоторые (старые) могут потребовать #include <iostream.h>, ну и т.д и т.п. Некоторые компиляторы вообще могут С++ не поддерживать ![]() Не бывает вообще кроссплатформенного кода. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
ну это ладно, а почему вы не перечеслили главное, из-за чего здесь собственно сыр-бор? std::cout << "hello world" << std::endl; возвращает значение (ссылку на объект std::ostream), которое не исползьзуется. другими словами, если вы считаете что printf(...); некроссплатформенно, а (void) printf(...) кроссплатформенно вам нужно признать и следующее std::cout << "hello world" << std::endl; НЕкроссплатформенно (void) (std::cout << "hello world" << std::endl); Кроссплатформенно и вопрос вы где-нибудь когда-нибудь видели подобную, по вашему-кросплатформенную, конструкцию: (void) (std::cout << ****); я нигде и никогда не выдел. Специально даже поискал щас в гугле - ничего! Вы действительно считаете что (void) (std::cout << ****); это кроссплатформенный код? Это сообщение отредактировал(а) volatile - 2.7.2012, 23:41 |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
volatile, я так понял, что речь идёт не совсем о кросплатформенности. Уже писали, что добиться поддержки всех компиляторов не получится. Поэтому, в данном случае, Bodro просто хочет, чтобы его WarningList был пустым во всех компиляторах, которые он использует. Я, кстати, тоже люблю, чтобы было чисто
![]() Так что, вы просто развели тут холивар на ровном месте... Это сообщение отредактировал(а) artsb - 3.7.2012, 09:35 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
xvr |
|
||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Не считаю. Запись (void)printf(...) в последний раз видел во времена K&R C. Потом оно как то рассосалось ![]() В настоящее время мне не известно ни одного компилятора, который бы по своей инициативе ругался на неиспользуемое возвращаемое функцией значение (а уж тем более С++ компилятор) В настоящее время записи типа (void) func(...) или sizeof(char) используются в основном не для компилятора, а для программиста, в качестве явного указания намерений автора PS. (void) перед printf на мой взгляд - overkill, но тем не менее вполне допустимая конструкция. Со смыслом может быть использована в обучающих целях - показать, что printf таки возвращает значение (которое мы не используем) PPS. Конструкцию
Добавлено через 1 минуту и 21 секунду
Точно! |
||||||||||
|
|||||||||||
volatile |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
Да нет автор утверждал именно об настоящеей кроссплатформенности.
Ну вот это ближе к истине. А использует он, компилятор для узкоспециализированного микроконроллера STi 5100, для тюнера (посмотрел не поленился). Просто автор утверждал что именно так нужно писать всегда и везде. Есть много экзотическиских компиляторов, и ставить критерием кроссплатформенности, какой-то левый компилятор для конроллера кофемолки или стиральной машины - нонсенс.
Короче чтоб закрыть тему, предлагаю свой вариант. вот эту функцию я бы написал так:
удачи всем! ![]() Это сообщение отредактировал(а) volatile - 4.7.2012, 01:37 |
||||||
|
|||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 3 Всего: 85 |
Кстати говоря,
Оказывается, этот охрененно кроссплатформенный код (так всем ужасно понравившийся) вообще не компилируется на нормальном С компиляторе ни здесь: http://codepad.org/PauSSnZ5 ни здесь: http://liveworkspace.org/code/54a261066030...e3cf2b1494edd74 ![]() да, да, абсолютно! |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: нет Всего: 10 |
volatile, так ето же не с++
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |