Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2011, 20:16   #11
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

alex_x_x спс, глаза прям открыли . _-Re@l-_, что бы я без тебя делал . Ответь на поставленный вопрос.
Так народ, я понял, что после моего ответа, меня покритиковали и сразу поубегали, что бы не показать, что чего то не знаете. Но это нормально. Уходить от вопроса я считаю не самое лучшее качество. alex_x_x ну для чего то auto использовали то для функций. И я думаю, что не с проста.

Последний раз редактировалось profi; 05.03.2011 в 20:34.
profi вне форума Ответить с цитированием
Старый 05.03.2011, 20:35   #12
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
. _-Re@l-_, что бы я без тебя делал
Рад, что ты это понял
Цитата:
Так народ, я понял, что после моего ответа, меня покритиковали и сразу поубегали, что бы не показать, что чего то не знаете
О, это явление постоянное в мире.
_-Re@l-_ вне форума Ответить с цитированием
Старый 05.03.2011, 21:18   #13
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
alex_x_x спс, глаза прям открыли . _-Re@l-_, что бы я без тебя делал . Ответь на поставленный вопрос.
Так народ, я понял, что после моего ответа, меня покритиковали и сразу поубегали, что бы не показать, что чего то не знаете. Но это нормально. Уходить от вопроса я считаю не самое лучшее качество. alex_x_x ну для чего то auto использовали то для функций. И я думаю, что не с проста.
не скрываю, что не знаю си в таких тонкостях, язык где можно все что угодно
для меня вот загадка, почему в си можно
Код:
#include <stdlib.h>

int main()
{
  int Arr[rand()]; 
  return 0;
}
и нормально, без ворнингов компилируется
alex_x_x вне форума Ответить с цитированием
Старый 05.03.2011, 21:35   #14
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

alex_x_x
А что там не так?
Генерируется число, создаётся массив, у меня - int Arr[41].
the_deer_one вне форума Ответить с цитированием
Старый 05.03.2011, 21:37   #15
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

the_deer_one в том файле функции:
Код:
auto int iterate_disk (const char *disk_name);
auto int iterate_partition (grub_disk_t disk, const grub_partition_t partition);
Объявлены внутри другой функции. Это нормально. Так как объявление ничего не создает, а говорит компилятору, что где-то там, далеко находится определение, т.е. тело функции. Вопрос с auto все равно открыт.

Последний раз редактировалось profi; 06.03.2011 в 12:25.
profi вне форума Ответить с цитированием
Старый 05.03.2011, 21:47   #16
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

profi
Цитата:
Объявлены внутри другой функции.
В той же. Она начинается на 80й и кончается на 166й строке.

profi
Цитата:
если размер массива не константа
Он константый. Сначала вычисляется значение rand(), затем с этим значением создаётся массив.
the_deer_one вне форума Ответить с цитированием
Старый 05.03.2011, 21:56   #17
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

the_deer_one все верно не увидел. the_deer_one думаю тебе этот вопрос нужно задать на другом форуме, например на ЛОР.

the_deer_one на "свежую" голову полазил по сайтам и все таки нашел про вложенные функции в Си. Си и С++ как известно не поддерживают вложенные функции. Но все таки некоторые компиляторы, например как GNU это поддерживают, но только для Си. Кстати по вложенным функциям вот ссылка. А вот что по ней:
Код:
A nested function always has no linkage. Declaring one with extern or static is erroneous.
If you need to declare the nested function
before its definition, use auto (which is otherwise meaningless for function declarations).

     bar (int *array, int offset, int size)
     {
       __label__ failure;
       auto int access (int *, int);
       /* ... */
       int access (int *array, int index)
         {
           if (index > size)
             goto failure;
           return array[index + offset];
         }
       /* ... */
     }
the_deer_one спасибо за вопрос. Для себя узнал новое про вложенные функции .

Последний раз редактировалось profi; 06.03.2011 в 12:31.
profi вне форума Ответить с цитированием
Старый 06.03.2011, 12:09   #18
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
Сообщение от alex_x_x Посмотреть сообщение
не скрываю, что не знаю си в таких тонкостях, язык где можно все что угодно
для меня вот загадка, почему в си можно
Код:
#include <stdlib.h>

int main()
{
  int Arr[rand()]; 
  return 0;
}
и нормально, без ворнингов компилируется
И не должно быть вэрнингов, это так называемый variable length array, его добавили в C99. В плюсах такого нету и, я надеюсь, не будет, т.к. случай, когда память не может быть выделена -- undefined condition, что не есть гуд.

Цитата:
Он константый. Сначала вычисляется значение rand(), затем с этим значением создаётся массив.
Заблуждаетесь, в данном случае тут не константа.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 06.03.2011 в 12:13.
Obey-Kun вне форума Ответить с цитированием
Старый 06.03.2011, 12:16   #19
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Obey-Kun хотя ты прав. Память под статический массив будет выделятся во время компиляции. Блин зачем я извинялся .

Последний раз редактировалось profi; 06.03.2011 в 12:24.
profi вне форума Ответить с цитированием
Старый 06.03.2011, 13:12   #20
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

я знаю про с99, компилировалось естественно gcc -std=c89 1.c
alex_x_x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52
Функции в си. Вывод двумерного массива из функции. Evgen51 Общие вопросы C/C++ 9 13.05.2010 03:59
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57