Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
1

Передать константу с одного файла в другой по ссылке

12.05.2015, 07:14. Показов 5232. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Товарищи, нужна помощь! Хочу передать константу с одного файла в другой.

Есть константа в одном файле
C++
1
extern const int size=10;
Есть массив во втором
C++
1
2
extern const int size;
int mas[size];
Пишет что константа требует инициализации. Как сделать чтобы она передалась с одного файла в другой?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2015, 07:14
Ответы с готовыми решениями:

Передать массив из одного файла в другой
Как передать переменную значение которой массив из одного файла в другой.

Передать переменную с одного файла в другой
У меня есть 2 файла pr1 и pr2, в pr1 создаю переменную $a, которой зайдаю значения rand(1,5). Как...

Передать переменную из одного файла JS в другой
Здравствуйте Подскажите, пожалуйста, как передать переменную из одного файла JS в другой файл JS ...

Передать переменную из одного файла в другой
Здравствуйте, save_dan_o_pol-нужны из этого файла переменные $familia и $tema перенести в файл...

27
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
12.05.2015, 07:17 2
В одном из файлов надо написать без extern
C++
1
const int size=10;
extern как раз и означает, что переменную искать надо где-то в другом файле.
1
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 07:29  [ТС] 3
zss, спасибо!

Добавлено через 4 минуты
zss, и при этом же надо подключать один файл в дргуой верно?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 07:33 4
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
и при этом же надо подключать один файл в дргуой верно?
и да и нет
смотря что подразумевается под подключать
вот вполне реальное решение
file1.h
C++
1
extern const int size;
file2.c
C++
1
2
#include "file1.h"
const int size=10;
file3.c
C++
1
2
#include "file1.h"
int mas[size];
1
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 07:42  [ТС] 5
ValeryS, Нет не работает, а вариант zss, и без extern работает

Добавлено через 28 секунд
Смысла extern пока не уловил
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 07:47 6
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
ValeryS, Нет не работает,
что не работает?
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
а вариант zss, и без extern работает
а ниче что мы одно и тоже написали?
и где это у Сергей Сергеича отсутствие extern?
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
Смысла extern пока не уловил
внешняя переменная
говорит компилятору, что нефиг искать её реализацию в данной единице трансляции(читай файл .с)
0
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 08:02  [ТС] 7
ValeryS, Вот скриншоты со студии
Передать константу с одного файла в другой по ссылке

Название: Screenshot_2.jpg
Просмотров: 149

Размер: 21.6 Кб
Передать константу с одного файла в другой по ссылке


И в mian ошибка!
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 08:13 8
точка с запятой в f1.h присутствует?
0
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 08:23  [ТС] 9
ValeryS, не было, поставил и ошибка осталась

Добавлено через 8 минут
ValeryS, но если не объявлять массив то рабоатет
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 08:26 10
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
поставил и ошибка осталась
какая ошибка?
пойми что делает #include
просто вкладывает все что есть в файле в эту строчку
т.е
C++
1
2
#include "f1.h"
int mas[size];
превратится
в
C++
1
2
extern const int size;
int mas[size];
а если нет перевода строки в заголовочном файле
то в
C++
1
extern const int size;int mas[size];
посему в f1 после всех описаний перевод строки присутствует?
0
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 08:38  [ТС] 11
ValeryS, а как может перевод строки влиять на ошибку? если есть ; в конце строки.
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 9
12.05.2015, 08:42 12
ValeryS, а зачем вообще добавлять "extern const int size", если он находится в file.h? Мы же просто подключаем этот файл и используем эту константу.

Да и с подключением дополнительной библиотеки всё понятно, а как организовать такую схему?

file1.c
C++
1
const int size = 10;
file2.c
C++
1
2
3
4
5
extern const int size;
int main()
{
int mas[size];
}
Подчёркивается красной волнистой линией "size" в массиве и просит инициализации.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
12.05.2015, 08:44 13
Лучший ответ Сообщение было отмечено Mikhail1990 как решение

Решение

А Вы ДЕЙСТВИТЕЛЬНО оба файла (file1.c и file2.c) включили в проект?
1
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 08:46  [ТС] 14
zss, спасибо!
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 08:47 15
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
а как может перевод строки влиять на ошибку? если есть ; в конце строки.
поскольку это препроцессор то возможны всякие трудноуловимые ошибки, так что лучше ставить
Цитата Сообщение от efa16 Посмотреть сообщение
а зачем вообще добавлять "extern const int size", если он находится в file.h?
не понял вопроса
Цитата Сообщение от efa16 Посмотреть сообщение
Подчёркивается красной волнистой линией "size" в массиве и просит инициализации.
щас проверим

Добавлено через 55 секунд
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
но тогда не вижу смысла extern
выброси и увидишь
1
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
12.05.2015, 08:49  [ТС] 16
ValeryS, спасибо! понял
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 9
12.05.2015, 08:58 17
zss и ValeryS, вот фотография с ошибкой константы.

Передать константу с одного файла в другой по ссылке


А вот рабочий вариант с переменной int.

Передать константу с одного файла в другой по ссылке
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.05.2015, 09:04 18
Цитата Сообщение от ValeryS Посмотреть сообщение
щас проверим
действительно с константами фигня какая то получается
по крайней мере в VS2008
вот так не работает
f1.c
C++
1
const int size = 10;
main.c
C++
1
2
3
4
5
6
extern const int size;
int main()
{
    int mas[size];
    return 0;
}
а вот так работает
main.c
C++
1
2
3
4
5
6
extern const int size=10;
int main()
{
    int mas[size];
    return 0;
}
и даже так
main.c
C++
1
2
3
4
5
6
extern const int size=1000;
int main()
{
    int mas[size];
    return 0;
}
и даже вот так
main.c
C++
1
2
3
4
5
6
 const int size=1000;
int main()
{
    int mas[size];
    return 0;
}
может кто прокомментирует с точки зрения стандарта
Лично я константы на несколько файлов не расскидывал
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 9
12.05.2015, 09:07 19
ValeryS, у меня VS2013. Столкнулся с этой проблемой при чтении Праты(главы 9). Там говориться будто надо добавлять модификатор extern. Но я как только уже не пробовал и всё не работает, кроме подключения дополнительной библиотеки.

Вот ссылочка на этот раздел, может я что-то упустил. https://books.google.com.ua/bo... BC&f=false
0
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
12.05.2015, 10:17 20
Цитата Сообщение от ValeryS Посмотреть сообщение
может кто прокомментирует с точки зрения стандарта
Цитата Сообщение от ValeryS Посмотреть сообщение
действительно с константами фигня какая то получается
У констант по умолчанию внутреннее связывание.
0
12.05.2015, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2015, 10:17
Помогаю со студенческими работами здесь

Передать элементы из одного из XML файла в другой
Подскажите кто-нибудь. Имеется 3 xml файла, один содержит список клиентов, другой - список книг....

Как передать данные из одного файла в другой
Добрый день, помогите пожалуйста, у меня есть форма логина и пароля, <body> <form...

Как передать переменную из одного файла в другой
Здравствуйте. Создал класс MainWindow в mainwindow.h : #ifndef MAINWINDOW_H #define...

Передать значение из одного QML файла в другой
День добрый. Подскажите, как передать значение из одного QML файла в другой? В документации...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru