реклама на сайте
подробности

 
 
18 страниц V  « < 9 10 11 12 13 > »   
Reply to this topicStart new topic
> Косяк у Кейла, Препроцессор не следит за скобками
zltigo
сообщение Oct 10 2015, 21:03
Сообщение #151


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (den_po @ Oct 10 2015, 23:34) *
Вы из тех, кто считает себя слишком опытным, чтоб допустить свою неправоту, да?

Своим постом "Гуглите, читайте, пробуйте". Вы не смогли не то, что "доказать", а даже хоть как-то попытаться обосновать "правоту" своего утверждения:
QUOTE
int function();
и
int function(void);
это в си совсем не одно и то же
...
Первый вариант позволяет вызвать функцию с любым числом аргументов.
...сейчас устаревшее, но из стандарта не удалённое.

Мне только оставалось согласиться c Вашим провалом, что я и сделал. Так что "дискуссия" с Вами завершена.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 10 2015, 21:27
Сообщение #152


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Упёртый. Ясно. А ведь убедиться, что я прав, так легко...
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 10 2015, 22:24
Сообщение #153


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(den_po @ Oct 11 2015, 00:27) *
Упёртый. Ясно. А ведь убедиться, что я прав, так легко...

Ахаха! Вы такие смешные biggrin.gif
В интернете кто-то неправ
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 11 2015, 07:13
Сообщение #154


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



У zltigo много безапелляционных утверждений, обычно строящихся по схеме "никто не может быть прав, если я думаю иначе", однако в этом конкретном случае хотелось бы больше деталей.
Стандарт языка С достоверный с ИСО сайта фиг достанешь, он там за деньги, а что находиться нахаляву - перепечатки и трактования. Косвенно я нашел 2 вещи, что вроде бы в С89 было function() - объявление функции возвращающей int и принимающей любое число параметров, но там и нельзя было написать function(void). А с С99 вроде бы когда появилось function(void) уже список переменных параметров задать даже через function(...) нельзя, нужен хотя бы 1 формальный параметр function(double p, ...)

Но это перепечатки и объяснения друг другу, а вот реально в документе АНСИ я что-то найти правды не смог, даже подлинного документа не смог найти....

Кто-то внесет ясность? желательно со ссылкой на ревизию стандарта.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 11 2015, 08:58
Сообщение #155


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Golikov A. @ Oct 11 2015, 10:13) *
Стандарт языка С достоверный с ИСО сайта фиг достанешь...

Это собственно незачем и делать. Комитет, кроме собственно стандарта предназначенного для разработчиков компиляторов, выпустил так-же "Rationale" , AKA руководство для пользователей.
QUOTE
то вроде бы в С89 было function() - объявление функции возвращающей int и принимающей любое число параметров, но там и нельзя было написать function(void).

Написание function(void) именно тогда и было введено, и именно в противовес function(), которое трактовалось иногда в отсутствие стандартов, производителями компиляторов подтянувших фичи C++, и как то, что об агрументах ничего неизвесто и позволяло таким образом тупо посылать компилятор нафиг с его контролем. То есть получался не прототип функции, а отключалка контроля.

C появлением первого-же Стандарта языка, появились и прототипы, и соответственно официальный способ описать прототип функции без параметров - function(void). А не кем-то, когда-то используемый на свое усмотрение для этой цели function(). А function(); является соответственно ошибочным прототипом, на который компитяторы ругаются по умолчанию предупреждением (для обеспечения совместимости с разнообразными достандартными исходниками), как по той-же причине ругаются предупреждением, а не ошибкой, на отсутствие прототипов, котрых так-же не было у K&R.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 11 2015, 10:28
Сообщение #156


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Молодец, нашёл.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 11 2015, 11:03
Сообщение #157


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (den_po @ Oct 11 2015, 13:28) *
Молодец, нашёл.

Повторяю:
QUOTE
Мне только оставалось согласиться c Вашим провалом, что я и сделал. Так что "дискуссия" с Вами завершена.




--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Lagman
сообщение Oct 11 2015, 12:03
Сообщение #158


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Как то вяло все происходит, учитесь у профи sm.gif
https://scontent-ams2-1.xx.fbcdn.net/hphoto...amp;oe=56A4AFCB
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 11 2015, 13:11
Сообщение #159


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Lagman @ Oct 11 2015, 15:03) *
Как то вяло все происходит

Понять бы, вообще, суть текущей переписки. rolleyes.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 11 2015, 14:28
Сообщение #160


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Как откусить яблоко. Сериал. Многоходовка.

IAR на прототип с пустыми скобками не ругается. И правильно делает. Если считает их однозначно пустым списком. А бэк совместимость логичнее задавать опцией компиляции.

По поводу пустых скобок в for() ошибся, т.к. никогда его не использую, он пишется for(;;).

Цитата(zltigo @ Oct 11 2015, 12:58) *
function(void)

Это криво. Неявный int тоже криво.

void, как и другие стандартные типы, при встрече в коде является началом объявления типа объекта. В пустом списке параметров нет ни одного объекта.

Сообщение отредактировал GetSmart - Oct 11 2015, 14:37


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 11 2015, 14:52
Сообщение #161


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(zltigo @ Oct 11 2015, 16:03) *
Мне только оставалось согласиться c Вашим провалом, что я и сделал.

Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились, это мой провал? Ну ок, "гуру" меня размазал.

Цитата(GetSmart @ Oct 11 2015, 18:28) *
Это криво. Неявный int тоже криво.

Неявное объявление функции при первом использовании - вот, наверное, самое отвратительное в сях.

Сообщение отредактировал den_po - Oct 11 2015, 15:04
Go to the top of the page
 
+Quote Post
Petka
сообщение Oct 11 2015, 15:53
Сообщение #162


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(den_po @ Oct 11 2015, 17:52) *
Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились, это мой провал? Ну ок, "гуру" меня размазал.
...

Не утруждайтесь. Это такой стиль. Или как принято говорить: двойные стандарты. Когда я в этой теме просил "гуру" дать ссылки на подтверждение своих голословных заявлений (http://electronix.ru/forum/index.php?s=&showtopic=130098&view=findpost&p=1361284) , то "гуру" не соизволил ничего ответить по существу дела. Вместо этого "гуру" зачем-то приплёл не относящийся к делу пустой "for(;;)" прекрасно понимая что это совсем не эквивалент do-while-zero конструкции. Забавно получилось, что "гуру" вместо признания своей ошибки начал загонять себя ещё глубже, ссылаясь на "творца Си" Денниса Ритчи. Однако, "гуру" забыл что в сеть попали исходники самых первых трансляторов. По исходникам становится очевидно, что конструкция for вообще отсутствовала в первом компиляторе а для циклов "творец" использовал while.

P.S. Будьте добрее. Всем хороших выходных.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 11 2015, 16:28
Сообщение #163


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (den_po @ Oct 11 2015, 17:52) *
Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились

С Вашей глупостью
http://electronix.ru/forum/index.php?showt...t&p=1371217
согласиться не могу. То, что Вы сейчас пытаетесь выкручиваться делая вид, что якобы писали о чем-то другом, тоже глупо sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 11 2015, 16:30
Сообщение #164


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
C появлением первого-же Стандарта языка, появились и прототипы, и соответственно официальный способ описать прототип функции без параметров - function(void).

мне кажется вы ошибаетесь....

даже вот человек пишет
Цитата
void, как и другие стандартные типы, при встрече в коде является началом объявления типа объекта. В пустом списке параметров нет ни одного объекта.

именно это и была проблема что void это как бы тип, и его только потом расширили до пустоты то есть function(void) - это такая специальная синтетическая конструкция, и появилась она не сразу, я видел это в изменениях, то есть в каких-то ново введениях.

Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 11 2015, 16:44
Сообщение #165


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Petka @ Oct 11 2015, 18:53) *
прекрасно понимая что это совсем не эквивалент do-while-zero конструкции

Вам просто следовало-бы наконец понять, что "do-while-zero" является сама по себе ненужным трюком и еще в каких-то "эквивалентах" не нуждается.


QUOTE (Golikov A. @ Oct 11 2015, 19:30) *
именно это и была проблема что void это как бы тип, и его только потом расширили...

Давайте начнем с того, что его не когда-то "потом расширили", а именно сразу в САМОМ ПЕРВОМ СТАНДАРТЕ языка Си, как только он в Си а не в ++ появился.
До первого стандарта было только неформальное описание языка K&R и ничего более.
До первого стандарта не было вообще прототипов функций, как и void. Как только появились стандартизированные прототипы функций, появилися прототип
function(void); прототипа function() не существовало ни у K&R ввиду отсутствия прототипов как таковых, ни в стандатах, где забит уже function(void).
Так-что прототип function() это калька писателей компиляторов в период бесстандартности, когда подтягивали безусловно эту безусловно полезнейнейшую фичу из C++.
А что Вы скажете о таком использовании void:
(void)argument;


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

18 страниц V  « < 9 10 11 12 13 > » 
Reply to this topicStart new topic
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016