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

 
 
> Возврат структуры из функции, косяк Кернигана-Ричи
ViKo
сообщение Feb 9 2015, 07:04
Сообщение #1


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

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



Перечитывая книжку классиков по программированию на языке С, обнаружил, что они возвращают из функции целую структуру. Конкретно, структуру из двух координат точки. Как это (возможно)?
У Шилдта этот вопрос вежливо замалчивается...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Feb 9 2015, 09:27
Сообщение #2


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

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



Будем считать что я осознал и раскаялся... (хотя разницу с массивом считаю надуманной)

Вот что пишут в Procedure Call Standard for the ARM Architecture.

5.4 Result Return
The manner in which a result is returned from a function is determined by the type of that result.
For the base standard:
 A Half-precision Floating Point Type is converted to single precision and returned in r0.
 A Fundamental Data Type that is smaller than 4 bytes is zero- or sign-extended to a word and returned in r0.
 A word-sized Fundamental Data Type (e.g., int, float) is returned in r0.
 A double-word sized Fundamental Data Type (e.g., long long, double and 64-bit containerized vectors) is
returned in r0 and r1.
 A 128-bit containerized vector is returned in r0-r3.
 A Composite Type not larger than 4 bytes is returned in r0. The format is as if the result had been stored in
memory at a word-aligned address and then loaded into r0 with an LDR instruction. Any bits in r0 that lie
outside the bounds of the result have unspecified values.
 A Composite Type larger than 4 bytes, or whose size cannot be determined statically by both caller and
callee, is stored in memory at an address passed as an extra argument when the function was called (§5.5,
rule A.4). The memory to be used for the result may be modified at any point during the function call.

Цитата(SM @ Feb 9 2015, 12:11) *
Ну вот именно так они и сделали! Оператор "return" сохраняет ее в этой самой, (локальной, глобальной) переменной. Что не нравится-то?

Чтобы использовать структуру, выданную из функции, ее нужно вручную присвоить своей.
Я же не могу выполнить, например, следующее:
myStruct.a = func(...).a;

А сначала
myStruct = func(...);
потом работать с членами myStruct.
Или при возврате структура останется в тех же регистрах, и будет считаться уже myStruct?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Возврат структуры из функции   Feb 9 2015, 07:04
- - Grizzzly   Цитата(ViKo @ Feb 9 2015, 10:04) Как это ...   Feb 9 2015, 07:26
|- - jcxz   Цитата(Grizzzly @ Feb 9 2015, 13:26) Комп...   Feb 9 2015, 12:09
|- - SM   Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр...   Feb 9 2015, 12:41
||- - Grizzzly   Цитата(SM @ Feb 9 2015, 15:41) а вот фраг...   Feb 9 2015, 12:45
|- - Grizzzly   Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр...   Feb 9 2015, 12:42
|- - SM   Цитата(Grizzzly @ Feb 9 2015, 15:42) Возм...   Feb 9 2015, 12:43
- - ViKo   Тогда это должно называться возврат указателя на с...   Feb 9 2015, 07:45
|- - Bear_ku   Цитата(ViKo @ Feb 9 2015, 12:45) Тогда эт...   Feb 9 2015, 08:52
- - Bear_ku   А вы дерзкий! Я бы не решился возвращать из фу...   Feb 9 2015, 08:15
|- - SM   Цитата(Bear_ku @ Feb 9 2015, 11:15) А вы ...   Feb 9 2015, 08:29
|- - ar__systems   Цитата(SM @ Feb 9 2015, 03:29) А никто та...   Mar 13 2015, 15:17
|- - XVR   Цитата(ar__systems @ Mar 13 2015, 18:17) ...   Mar 16 2015, 12:21
- - ViKo   Ничего не понимаю. То, что передается в функцию, н...   Feb 9 2015, 08:52
|- - SM   Цитата(ViKo @ Feb 9 2015, 11:52) Если мож...   Feb 9 2015, 09:00
|- - ViKo   Цитата(SM @ Feb 9 2015, 12:00) А аналогич...   Feb 9 2015, 09:09
|- - SM   Цитата(ViKo @ Feb 9 2015, 12:08) Единстве...   Feb 9 2015, 09:11
|- - andrew_b   Цитата(ViKo @ Feb 9 2015, 12:09) Число ил...   Feb 9 2015, 09:13
|- - SSerge   Цитата(ViKo @ Feb 9 2015, 16:09) Кто же и...   Feb 9 2015, 09:33
- - andrew_b   Вас же не смущает возврат, например, целого числа....   Feb 9 2015, 09:05
- - SM   Цитата(ViKo @ Feb 9 2015, 12:27) Я же не ...   Feb 9 2015, 09:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 10:12
Рейтинг@Mail.ru


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