|
|
 |
Ответов
(1 - 10)
|
Jan 28 2008, 11:57
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
В GCC есть вложенные функции? Т.е. можно написать: Код int f() { int a = 10; int f2() { return a + 2; } return f2(); } А не могли бы вы дать ссылку на описание этого? И как интересно он разруливает локальные области видимости внутри функции...
|
|
|
|
|
Jan 28 2008, 12:33
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066

|
Да, я неясно выразился - имел ввиду вызов из функции другой функции. Спасибо за ответ, просто читал хелп ИАРа, засомневался - вдруг последствия могут появиться при оптимизации.
|
|
|
|
|
Jan 28 2008, 12:37
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Непомнящий Евгений @ Jan 28 2008, 14:57)  В GCC есть вложенные функции? .... А не могли бы вы дать ссылку на описание этого? И как интересно он разруливает локальные области видимости внутри функции... GCC Internals Manual 15.2 Trampolines for Nested Functions: http://gcc.gnu.org/onlinedocs/gccint/Tramp...tml#TrampolinesA trampoline is a small piece of code that is created at run time when the address of a nested function is taken. It normally resides on the stack, in the stack frame of the containing function. Анатолий.
Сообщение отредактировал aesok - Jan 28 2008, 12:56
|
|
|
|
|
Jan 29 2008, 12:51
|

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

|
Цитата(oran-be @ Jan 29 2008, 13:35)  ...возвращать указатели на локальные переменные ... никто не запрещает В общем случае категорически неверно так поступать. Язык вообще не запрещает писать неверные программы Цитата , главное, чтобы интерфейс функции был соблюден. Что?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|