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

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

Войти
Регистрация
Восстановить пароль
 
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
#1

Unit,Header,Imp - C++

17.09.2009, 10:29. Просмотров 617. Ответов 5
Метки нет (Все метки)

Здравствуйте!
main.cpp
C++
1
2
3
4
5
6
7
//#include "unit1.h"
//#include "unit2.h"
#include "unit3.h"
int main()
{
    return 0;
}
unit1.h
C++
1
2
3
4
5
6
#pragma once
typedef double real;
struct NewTyp
{
  real x,y;
};
unit2.h
C++
1
2
3
#pragma once
#include "unit1.h"
NewTyp val;
unit3.h
C++
1
2
3
#pragma once
#include "unit2.h"
void Init();
unit3.cpp
C++
1
2
3
4
5
6
#include "unit3.h"
void Init()
{
  val.x=10;
  val.y=20;
};
Ну и как наверно уже догадались профессионалы я словил "Error LNK2005".
где можно почитать о том, что я делаю не так. И как делать правильно?
>Честное слово не понимаю, почему коллизия unit3.obj и main.obj
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 10:29     Unit,Header,Imp
Посмотрите здесь:

C++ unit-тестирование функции
struct and header files C++
C++ Можно ли дублировать header?
C++ Папки header файлов. VS 2010
описания header-ов C++
C++ Как работает header
C++ Переменная на весь Unit
Unit - тестирование C++
C++ Unit tests
Создать модуль Unit с определением структуры и операций на ней C++
Шаблоны в header и cpp C++
Посоветуйте интересные header-only библиотеки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
17.09.2009, 10:43     Unit,Header,Imp #2
Adler, Или в unit2.h
C++
1
struct NewTyp val;
или в unit1.h
C++
1
2
3
4
typedef struct 
{
  real x,y;
} NewTyp;
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
17.09.2009, 11:09  [ТС]     Unit,Header,Imp #3
easybudda
не помогло
Вложения
Тип файла: 7z scr.7z (402 байт, 14 просмотров)
Alexandoros
226 / 64 / 4
Регистрация: 02.06.2009
Сообщений: 280
17.09.2009, 12:11     Unit,Header,Imp #4
Ну и как наверно уже догадались профессионалы я словил "Error LNK2005".
NewTyp val; переместить из unit2.h в unit3.cpp
а в unit2.h написать extern NewTyp val;
И как делать правильно?
НИКОГДА НЕ ОПРЕДЕЛЯТЬ НЕКОНСТАНТНЫЕ ПЕРЕМЕННЫЕ В ХЕДЕРЕ.
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
17.09.2009, 12:39  [ТС]     Unit,Header,Imp #5
Alexandoros
Спасибо! Как раз то, что надо

Добавлено через 4 минуты
сделал так:
unit2.cpp
C++
1
2
#include "unit2.h"
NewTyp val;
unit2.h
C++
1
2
3
#pragma once
#include "unit1.h"
extern NewTyp val;
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
17.09.2009, 12:50     Unit,Header,Imp #6
вот так получилось:
unit1.h
C
1
2
3
4
5
typedef double real;
typedef struct {
    real x;
    real y;
} Point_t;
unit2.h
C
1
2
3
#include "unit1.h"
 
Point_t pt;
unit3.h
C
1
2
3
#include "unit2.h"
 
void init();
unit3.c
C
1
2
3
4
5
6
#include "unit3.h"
 
void init(){
    pt.x = 3.0;
    pt.y = 5.0;
}
main.c
C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include "unit3.h"
 
int main(){
    init();
    printf("pt.x = %.1f\tpt.y = %.1f\n", pt.x, pt.y);
    return(0);
}
компилировал вот так:
Код
gcc -o main main.c unit3.c
вывод:
Код
$ ./main 
pt.x = 3.0      pt.y = 5.0
Yandex
Объявления
17.09.2009, 12:50     Unit,Header,Imp
Ответ Создать тему
Опции темы

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