Форум программистов, компьютерный форум CyberForum.ru

Не могу объявить массив внутри main - ошибка при линковке - C++

Восстановить пароль Регистрация
 
 
Raybek
0 / 0 / 0
Регистрация: 24.08.2013
Сообщений: 7
24.08.2013, 16:28     Не могу объявить массив внутри main - ошибка при линковке #1
Доброго времени суток!

Я начинающий в С++. Использую gcc в Ubuntu 13.04 x64 bit.

Прохожу сейчас массивы. Заметил одну странность.
При попытке одновременного объвления
- массива внутри main
- и использования printf()
при компиляции выходит ошибка, я как понял линковщика, следующего содержания:
/tmp/ccXzvblP.o.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1

Если по отдельности или выносить объявление массива до main, то компиляция идет без проблем.

Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
 
int main() {
    long int razmer=sizeof(a);
    long int dlina=razmer/sizeof(int);
 
    printf("В массиве 'a' %lu элемент(а,ов) \n",dlina);
 
    printf("Размер массива 'а' равен %lu Бт \n", razmer);
 
    //Выводим содержимое массива "а"    
    for (int i=0; i<dlina; ++i)
    {
        printf("Квадрат числа %u равен %u \n",a[i],a[i]*a[i]);
    };
    
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raybek
0 / 0 / 0
Регистрация: 24.08.2013
Сообщений: 7
24.08.2013, 21:32  [ТС]     Не могу объявить массив внутри main - ошибка при линковке #21
Цитата Сообщение от Raybek Посмотреть сообщение
Спасибо! Так скомпилировал!

Профессионалы, как новичок, из Ваших рассуждений выше вынес, что дело все-таки в используемом компилятором стандарте? с89, с99? А как узнать какой по умолчанию стандарт использует компилятор gcc?
Че-то я ошибся. Не скопмилировал так. Выдал ошибку:
предупреждение: command line option «-std=c99» is valid for C/ObjC but not for C++ [по умолчанию включена]
/tmp/ccfAEPGR.o.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
24.08.2013, 21:33     Не могу объявить массив внутри main - ошибка при линковке #22
Цитата Сообщение от Raybek Посмотреть сообщение
А как узнать какой по умолчанию стандарт использует компилятор gcc?
Я же писал.
Цитата Сообщение от castaway Посмотреть сообщение
По-умолчанию, GCC использует стандарт gnu89
Raybek
0 / 0 / 0
Регистрация: 24.08.2013
Сообщений: 7
24.08.2013, 21:35  [ТС]     Не могу объявить массив внутри main - ошибка при линковке #23
Цитата Сообщение от gray_fox Посмотреть сообщение
Код
g++ array1.cpp -o array1
Во! А так получилось! Спасибо.

Значит получается, что дело в стандарте используемом?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 21:36     Не могу объявить массив внутри main - ошибка при линковке #24
Цитата Сообщение от Raybek Посмотреть сообщение
Спасибо! Так скомпилировал!
Вы компилируете код С, а не С++
Используйте g++, чтобы компилировать код С++

Добавлено через 37 секунд
Цитата Сообщение от Raybek Посмотреть сообщение
стандарте используемом?
gcc компилирует Си'шный код
g++ код С++
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.08.2013, 21:38     Не могу объявить массив внутри main - ошибка при линковке #25
Цитата Сообщение от gray_fox Посмотреть сообщение
либо
Код
gcc array1.cpp -o array1 -std=c99
gcc расширение .cpp не нравится. Если так:
Код
gcc array1.c -o array1 -std=c99
, то нормально компилирует.
Raybek
0 / 0 / 0
Регистрация: 24.08.2013
Сообщений: 7
24.08.2013, 21:39  [ТС]     Не могу объявить массив внутри main - ошибка при линковке #26
Спасибо всем! Отличный форум! Буду теперь тут обитать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 21:45     Не могу объявить массив внутри main - ошибка при линковке
Еще ссылки по теме:

C++ Объявить массив? Запросто! Объявить массив массивов? А как это?
C++ Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1
Ошибка C4307 при объявлении в main() указателя шаблона-класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
24.08.2013, 21:45     Не могу объявить массив внутри main - ошибка при линковке #27
Цитата Сообщение от alsav22 Посмотреть сообщение
gcc расширение .cpp не нравится.
Да, действительно. можно так
Код
gcc -x c array1.cpp -o array1 -std=c99
Yandex
Объявления
24.08.2013, 21:45     Не могу объявить массив внутри main - ошибка при линковке
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru