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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: std::begin std::end принцип работы  (Прочитано 12403 раз)
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #15 : Апрель 01, 2018, 14:56 »

Игорь, посыл был в том, что сигнатуры отличаются тем, что в Foo1 известен размер на момент компиляции, в Foo2 не известен.
Код
C++ (Qt)
void Foo1( int arr[3] );
void Foo2( int * arr );
 
По-моему эти ф-ции идентичны и код их одинаков.
Ничего подобного, в обоих случаях неизвестен, оба варианта - передача по указателю. [3] удобно для программиста (мол, планируется 3 эл-та), но компилятору все равно
Отвечаете? Прям за все популные нынче компиляторы? При компиляции данного кода как сишный, и как плюсовый?
Мнеб такую уверенность, жилось бы спокойнее Крутой
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Апрель 01, 2018, 17:57 »

Отвечаете? Прям за все популные нынче компиляторы? При компиляции данного кода как сишный, и как плюсовый?
Улыбающийся  Ну зачем строчить на форум если проверить - пару минут? Возьмите sizeof(arr) в теле ф-ции, в обоих случаях увидите размер указателя. На каком хотите компиляторе.

Мнеб такую уверенность, жилось бы спокойнее Крутой
Как Вы знаете, С++ совместим с С, т.е. программа на С является программой на С++. В С эти конструкции допустимы, стало быть на плюсах тоже, и рез-т должен быть одинаков. Не надо иметь какую-то уверенность, просто верить самому себе   Улыбающийся
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #17 : Апрель 01, 2018, 20:34 »

Как в стандарте языка написано, так компилятор и должен компилять. Вариант ответа.
Записан

Пока сам не сделаешь...
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #18 : Апрель 02, 2018, 12:04 »

Как Вы знаете, С++ совместим с С, т.е. программа на С является программой на С++. В С эти конструкции допустимы, стало быть на плюсах тоже, и рез-т должен быть одинаков.
Глупости - одинаковый исходный код поданный на вход си-компилятору дает один результат, а на вход плюсовому компилятору - другой. Речь не только о манглинге имен, но и о том какое соглашение о вызове функций будет заиспользовано.

Не стоит воспринимать мой предыдущий пост как наброс на...
Просто я уже сталкивался с ситуациями когда arr[] передовался в функцию как указатель, а arr[3] укладывался целиком в стэк )
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Апрель 02, 2018, 12:54 »

Глупости
Если Вы считаете человека глупым - не стоит тратить на него время и слова

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

Просто я уже сталкивался с ситуациями когда arr[] передовался в функцию как указатель, а arr[3] укладывался целиком в стэк )
Так приведите такую ситуацию - или мне уже пора последовать собственному совету выше?  Улыбающийся
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #20 : Апрель 02, 2018, 15:28 »

Глупости
Если Вы считаете человека глупым - не стоит тратить на него время и слова
Бывает, что и умный глупость сморозит...


- одинаковый исходный код поданный на вход си-компилятору дает один результат, а на вход плюсовому компилятору - другой. Речь не только о манглинге имен, но и о том какое соглашение о вызове функций будет заиспользовано.
Не путайте "код" и "результат"
Ну дак в конечном счете важен только результат. И в этом контексте "Как Вы знаете, С++ совместим с С, т.е. программа на С является программой на С++." - откровенная глупость


Просто я уже сталкивался с ситуациями когда arr[] передовался в функцию как указатель, а arr[3] укладывался целиком в стэк )
Так приведите такую ситуацию - или мне уже пора последовать собственному совету выше?  Улыбающийся
Вот уж простите, не упомню...
ЗЫ. Таки да, следуйте, собственным советым - если к прочим глухи
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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