LINUX.ORG.RU

История изменений

Исправление hummer, (текущая версия) :

Это не писькомерство, а допуск к обсуждению, дабы отсеять тех кто явно не в теме. Удивительно как ты писал если не понимаешь таких очевидных вещей.

Ну ты мне ещё допуски начни раздавать. :-))) Удивительно, как ты умудрялся работать в команде с такими закидонами или ты одиночка?

Туда просто перекочевала эта глупость с signed int. Ну а вообще прекрасно она работает с unsigned, если числа меньше чем максимум int’а. Хотя должна, конечно же, с size_t, если по уму делать.

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

Речь шла про unsigned типы вообще, как пример был приведён char. Слово int туда попало по недосмотру (а редактировать уже было поздно), и по-моему это очевидно, но нет, надо придраться.

По недосмотру ты можешь и код с таким же неправильным предположением написать. Поэтому лучше, когда компилятор заранее даст тебе по рукам, чтобы ты не выпендривался. :-))

Ну ты один из тех религиозно-стандартных фанатиков, таких же как те что всунули эту гадость в clang. Прототип fopen() тоже в стандарте прописан, но тебе никто не помешает сделать свой fopen() с другим прототипом. Потому что одно дело синтаксис языка и правила трансляции языковых конструкций в машинные инструкции - они заложены в компиляторе и не могут меняться программистом. Другое дело библиотека - её можно хоть написать свою, хоть не использовать вовсе.

В отличии от fopen() прототип main() нельзя изменить. А ты, надо полагать, один из тех кулхацкеров, кто балуется ранней оптимизацией кода.

Стандарт, в случае Си, это не первоисточник абсолютной истины, а всего лишь подведение итогов по поводу сложившихся общепринятых практик (на общепринятых платформах) на момент конца 80-х годов (С99 и более поздние - так вообще скорее рекомендации по поддержке новых фич для авторов компиляторов). И если синтаксис языка от платформы не зависит и везде одинаковый (почти), то интерфейс к загрузчику и прочим частям системы - платформенно-специфичный. В винде вот например нет main() вообще, там есть WinMain(). Так же где-то запросто может не быть stdio.h или других частей стандартной библиотеки, это никак не адекватное основание отказаться компилировать этот код.

Стандарт, как и общепринятые практики - это то, на что нужно ориентироваться. Например Google, в своём style guide прямым текстом не рекомендует использовать unsigned типы, кроме как в отдельных, весьма редких случаях. Почитай на досуге. А в Винде есть и main() и WinMain() и даже DllMain(), а какой из них будет entry point решает линкёр - либо сам, либо в соответствии с параметрами линковки.

Исходная версия hummer, :

Это не писькомерство, а допуск к обсуждению, дабы отсеять тех кто явно не в теме. Удивительно как ты писал если не понимаешь таких очевидных вещей.

Ну ты мне ещё допуски начни раздавать. :-))) Удивительно, как ты умудрялся работать в команде с такими закидонами или ты одиночка?

Туда просто перекочевала эта глупость с signed int. Ну а вообще прекрасно она работает с unsigned, если числа меньше чем максимум int’а. Хотя должна, конечно же, с size_t, если по уму делать.

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

Речь шла про unsigned типы вообще, как пример был приведён char. Слово int туда попало по недосмотру (а редактировать уже было поздно), и по-моему это очевидно, но нет, надо придраться.

По недосмотру ты можешь и код с таким же неправильным предположением написать. Поэтому лучше, когда компилятор заранее даст тебе по рукам, чтобы ты не выпендривался. :-))

Ну ты один из тех религиозно-стандартных фанатиков, таких же как те что всунули эту гадость в clang. Прототип fopen() тоже в стандарте прописан, но тебе никто не помешает сделать свой fopen() с другим прототипом. Потому что одно дело синтаксис языка и правила трансляции языковых конструкций в машинные инструкции - они заложены в компиляторе и не могут меняться программистом. Другое дело библиотека - её можно хоть написать свою, хоть не использовать вовсе.

В отличии от fopen() прототип main() нельзя изменить. А ты, нидо полагать, один из тех кулхацкеров, кто балуется ранней оптимизацией кода.

Стандарт, в случае Си, это не первоисточник абсолютной истины, а всего лишь подведение итогов по поводу сложившихся общепринятых практик (на общепринятых платформах) на момент конца 80-х годов (С99 и более поздние - так вообще скорее рекомендации по поддержке новых фич для авторов компиляторов). И если синтаксис языка от платформы не зависит и везде одинаковый (почти), то интерфейс к загрузчику и прочим частям системы - платформенно-специфичный. В винде вот например нет main() вообще, там есть WinMain(). Так же где-то запросто может не быть stdio.h или других частей стандартной библиотеки, это никак не адекватное основание отказаться компилировать этот код.

Стандарт, как и общепринятые практики - это то, на что нужно ориентироваться. Например Google, в своём style guide прямым текстом не рекомендует использовать unsigned типы, кроме как в отдельных, весьма редких случаях. Почитай на досуге. А в Винде есть и main() и WinMain() и даже DllMain(), а какой из них будет entry point решает линкёр - либо сам, либо в соответствии с параметрами линковки.