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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 13:17   #21
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

только что написал прогу, которая состоит из 2ух файлов, но походу их надо связать, а как это сделать?
1 файл _1.cpp
Код:
#include <iostream.h>
int tom=3;// определение внешней переменной
int dick=30;//определение внешней переменной
static int harry=300;// статическая переменая, внутреннее связывание
void remote_access();
main()
{
        cout<<" main() reports the following adresses:\n";
        cout<<&tom<<" = &tom, "<<&dick<<" = &dick, ";
        remote(access();
}
2 файл _2.cpp
Код:
#include <iostream.h>
extern int tom;// переменная tom определена в другом месте
static int dick=10;//перекрывает внешнюю переменную dick
int harry=200;
_1//что это делает????
void remote_access()
{
        cout<<"remote_access() reports the following wdresses:\n";
        cout<<&tom<<" =&tom, "<<&dick<<" &dick, ";
        cout<<&harry<<" &harry\n";
}
и ещё 1 вопрос:
_1//что это делает????
Dimarik вне форума Ответить с цитированием
Старый 16.05.2009, 13:27   #22
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от vasek123
p.s. Sazary у вас что за связь- только начинаю отвечать по теме, как вы уже ответили? Случаем не спутник или "локалка"?
Локалка

Цитата:
Сообщение от Dimarik
но походу их надо связать, а как это сделать?
Подключите один их них в другом.
Цитата:
_1//что это делает????
Мне вот тоже интересно ) Не должно здесь этого быть.

И еще у вас переменные по два раза объявляются.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 13:51   #23
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Цитата:
Подключите один их них в другом.
это мне надо прописывать #ifndef #endif
а затем подключать фал с помощью копанды #include " "????
Dimarik вне форума Ответить с цитированием
Старый 16.05.2009, 13:55   #24
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
это мне надо прописывать #ifndef #endif
А это здесь при чем? Совсем необязательно.
Эти директивы нужно использовать в заголовочных файлах. В простых исходниках не нужно.
Цитата:
а затем подключать фал с помощью копанды #include " "????
А как еще вы собираетесь это делать?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 14:04   #25
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Цитата:
И еще у вас переменные по два раза объявляются.
это пример из книги. это делается для того чтобы показать раницу между внежним и в внутренним связыванием.
но тем не менее у меня компиллятор выдаёт ошибку именно по поводу множественного объявления переменных
int dick=30;//определение внешней переменной
создаёт статистическую переменную с внешним связыванием и делает её доступной всей прогрумме
static int dick=10;//перекрывает внешнюю переменную dick
создаёт статическую переенную с внутренним связыванием и делает её досупной только тому файлу, в котором она объявлена. вроде бы так...
но тем не менее компиллятор выдаёт ошибки.. что не так?
Dimarik вне форума Ответить с цитированием
Старый 16.05.2009, 14:09   #26
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
это пример из книги. это делается для того чтобы показать раницу между внежним и в внутренним связыванием.
Если вы подключите один файл к другому с помощью include, то у вас переменные будут объявлены 2 раза.

Фактически ваша программа будет выглядеть как-то так:
Код:
#include <iostream.h>
extern int tom;// переменная tom определена в другом месте
static int dick=10;//перекрывает внешнюю переменную dick
int harry=200;
#include <iostream.h>
int tom=3;// определение внешней переменной
int dick=30;//определение внешней переменной
static int harry=300;// статическая переменая, внутреннее связывание
void remote_access();
main()
{
        cout<<" main() reports the following adresses:\n";
        cout<<&tom<<" = &tom, "<<&dick<<" = &dick, ";
        remote(access();
}
void remote_access()
{
        cout<<"remote_access() reports the following wdresses:\n";
        cout<<&tom<<" =&tom, "<<&dick<<" &dick, ";
        cout<<&harry<<" &harry\n";
}
Удалите дубликаты объявлений.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 14:18   #27
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

а как тогда сделать, чтобы была 1 переменная, которая действовала на всю программу с именем dick и пееменная сс именем dick, которая действует только на файл_2.cpp?
Dimarik вне форума Ответить с цитированием
Старый 16.05.2009, 14:23   #28
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
Сообщение от Dimarik Посмотреть сообщение
а как тогда сделать, чтобы была 1 переменная, которая действовала на всю программу с именем dick и пееменная сс именем dick, которая действует только на файл_2.cpp?
Обьявить эту переменную глобальной.

p.s. У меня последнее время начинает складываться впечатление что вы издеваетесь над нами...
vasek123 вне форума Ответить с цитированием
Старый 16.05.2009, 14:23   #29
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а как тогда сделать, чтобы была 1 переменная, которая действовала на всю программу с именем dick и пееменная сс именем dick, которая действует только на файл_2.cpp?
Если я правильно вас понял, то объявите ее так
Код:
static int dick=10;
в файле "_2.cpp".
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 16.05.2009, 14:33   #30
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Цитата:
p.s. У меня последнее время начинает складываться впечатление что вы издеваетесь над нами...
не в коем случае.. почему же...
Sazary так я так же и сделал с самого начала, в посте 21 я написал код (там только в 1ом файле не было написано #include "_2.cpp" но тем не менее у меня не работает программа
p.s. это учебная программа, которую предложил автор книги СТИВЕН ПРАТА, которая иллюстрирует спектры действия переменных с внешним и с внутренним связыванием
Dimarik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++. Наследование. Раздельная компиляция Matthew Помощь студентам 0 08.05.2009 21:03