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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Raybek
0 / 0 / 0
Регистрация: 24.08.2013
Сообщений: 7
#1

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

24.08.2013, 16:28. Просмотров 889. Ответов 26
Метки нет (Все метки)

Доброго времени суток!

Я начинающий в С++. Использую 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 16:28     Не могу объявить массив внутри main - ошибка при линковке
Посмотрите здесь:

Ошибка при линковке C++
C++ Из main невидно класс. Текст всех файлов проекта внутри.
VS 6.0 ошибка при линковке C++
Не могу объявить массив указателей на объект C++
Ошибка LNK2019 при линковке - как это решать систематически? C++
как мне в функции main() объявить функцию Do (), подскажите пожалуйста, на таком глупом застрял C++
Ошибка C4307 при объявлении в main() указателя шаблона-класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12520 / 7082 / 797
Регистрация: 27.09.2012
Сообщений: 17,489
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 21:36     Не могу объявить массив внутри main - ошибка при линковке #24
Цитата Сообщение от Raybek Посмотреть сообщение
Спасибо! Так скомпилировал!
Вы компилируете код С, а не С++
Используйте g++, чтобы компилировать код С++

Добавлено через 37 секунд
Цитата Сообщение от Raybek Посмотреть сообщение
стандарте используемом?
gcc компилирует Си'шный код
g++ код С++
alsav22
5410 / 4806 / 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++ Ошибка multiple definition of main при наследовании
C++ Размер исполняемого файла при статической и динамической линковке
C++ Ошибка при линковке
Изменения внутри метода класса не отображаются из main C++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1252 / 1135 / 54
Регистрация: 21.04.2012
Сообщений: 2,357
Завершенные тесты: 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 - ошибка при линковке
Ответ Создать тему
Опции темы

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