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

Программа с заголовочным файлом (с++) - C++

Восстановить пароль Регистрация
 
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
15.08.2011, 20:58     Программа с заголовочным файлом (с++) #1
Всем Привет! Недавно стал изучать использование заголовочных файлов в с++ и столкнулся с проблеммой. Написал вот такую программу (она бессмысленая, просто у меня в нормальной программе такаяже фигня) из двух файлов, но компиль ругается. В чем я ошибся и как исправить?
Вот заголовочный файл:
C++
1
2
3
//файл attach.h
int a, b;
a = b = 0;
Вот главный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//файл main.cpp
#include "attach.h"
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    extern int a, b;
    cout <<  a << ", " << b;
    system("PAUSE > nul");
    return EXIT_SUCCESS;
}
Вот, что компиль пишет:
Строка......Сообщение
1..............In file included from main.cpp
2..............expected constructor, destructor, or type conversion before '=' token
2..............expected `,' or `;' before '=' token
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
15.08.2011, 21:38     Программа с заголовочным файлом (с++) #2
а если
C++
1
int a = 0, b = 0;
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
15.08.2011, 21:41     Программа с заголовочным файлом (с++) #3
Цитата Сообщение от Yashman Посмотреть сообщение
//файл attach.h
C++
1
int b=0, a=0;
Попробуй так.
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
15.08.2011, 21:48  [ТС]     Программа с заголовочным файлом (с++) #4
тогда компиль пишет
[Linker error] undefined reference to `a'
[Linker error] undefined reference to `a'
[Linker error] undefined reference to `b'
[Linker error] undefined reference to `b'
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
15.08.2011, 22:03     Программа с заголовочным файлом (с++) #5
Напиши в главном файле
C++
1
2
extern a;
extern b;
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
15.08.2011, 22:28  [ТС]     Программа с заголовочным файлом (с++) #6
Спасибо zuq, сам я не додумался Правда, тогда надо писать не
C++
1
2
extern a;
extern b;
а вместе с типом:
C++
1
2
extern int a;
extern int b;
Кстати, тогда можно в заголовочном файле писать просто
C++
1
int a = b = 0;
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.08.2011, 10:19     Программа с заголовочным файлом (с++) #7
в заголовочном файле пишутся только объявления
определения должны быть в еденице трансляции
определение там, где происходит выделение памяти

C++
1
2
3
//файл attach.h
int a, b;
a = b = 0;
замени

C++
1
2
//файл attach.cpp
int a, b;
C++
1
2
//файл attach.h
extern int a, b;
C++
1
2
//файл main.cpp
#include "attach.h"
файлы .cpp (еденицы трансляции) должны быть добавлены в проект (чтобы компилировались)
Yashman
 Аватар для Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
16.08.2011, 15:39  [ТС]     Программа с заголовочным файлом (с++) #8
Огромное спасибо, accept, это очень помогло
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2011, 01:37     Программа с заголовочным файлом (с++)
Еще ссылки по теме:

C++ Программа работы с файлом, отображенным в память
Какую связь имеет запущенная программа со своим исполняемым файлом? Почему его нельзя удалить? C++
Невозможно открыть include с заголовочным файлом C++

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

Или воспользуйтесь поиском по форуму:
accept
17.08.2011, 01:37     Программа с заголовочным файлом (с++)
  #9

Не по теме:

Цитата Сообщение от accept
определения должны быть в еденице трансляции
файлы .cpp (еденицы трансляции) должны быть
единицы

Yandex
Объявления
17.08.2011, 01:37     Программа с заголовочным файлом (с++)
Ответ Создать тему
Опции темы

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