Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448

Глобальные дефайны

08.02.2012, 20:00. Показов 2110. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как объявить глобальные дефайны в C++ Bulder'e?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2012, 20:00
Ответы с готовыми решениями:

Глобальные переменные
Зравствуйте, уважаемые форумчане! Нужна квалифицированная помощь Взгляните на код. Переменная raznica обьявлена глобально на форме и...

Глобальные клавиши
Ребята привет, у меня всё реализовано НО... void __fastcall TMain::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)...

Глобальные переменные
Как объявить переменную и константу, чтобы они были видны во всех модулях проекта? Спасибо!

12
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
08.02.2012, 20:57  [ТС]
Ещё один вопрос
Из модуля Unit1.cpp запускаю поток модуля Manual.cpp в этом модуле используются функции-члены из Com.cpp
Компилятор выдаёт ошибку
[Linker Error] Unresolved external 'Com::tx_buf' referenced from C:\USERS\ALEX\DESKTOP\R-TERM_OOP\COM.OBJ
[Linker Error] Unresolved external 'Com::tx_count' referenced from C:\USERS\ALEX\DESKTOP\R-TERM_OOP\COM.OBJ
[Linker Error] Unresolved external 'Com::rx_buf' referenced from C:\USERS\ALEX\DESKTOP\R-TERM_OOP\COM.OBJ
[Linker Error] Unresolved external 'Com::rx_count' referenced from C:\USERS\ALEX\DESKTOP\R-TERM_OOP\COM.OBJ
[Linker Error] Unresolved external 'Com::rx_index' referenced from C:\USERS\ALEX\DESKTOP\R-TERM_OOP\COM.OBJ

Ругается на переменные класса Сом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Com
{
#ifndef ComH
#define ComH
#include <Classes.hpp>
//---------------------------------------------------------------------------
#define BUFSIZE 255
class Com
{
protected:
static unsigned char rx_buf[BUFSIZE], tx_buf[BUFSIZE];
static unsigned char tx_count, rx_index, rx_count;
public:
void open(void);
void pclose(void);
void write(unsigned char data);
void send(void);
unsigned char read(void);
void clear_data(void);
};
Прожэкт Bulder 6
Вложения
Тип файла: rar R-term_oop.rar (853.8 Кб, 4 просмотров)
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
08.02.2012, 21:34
После объявления класса вы должны объявить элемент как глобальную переменную вне класса, как показано ниже:
C++
1
unsigned char Com::rx_buf[BUFSIZE];
и так для всех "статик" переменных.
А дефайны я обычно пишу в отдельном файле и затем подключаю где нужны
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
08.02.2012, 22:00
Korbofos,
1. Где у вас коструктор класса и деструктор?
2. class Com
{
Что ето такое в начале ?
почему вы создаёте 2 одинаковых класса?
0
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
08.02.2012, 22:08  [ТС]
Цитата Сообщение от _engineer_ Посмотреть сообщение
А дефайны я обычно пишу в отдельном файле и затем подключаю где нужны
Я тоже так сделал подключил один и тоже файлик в двух местах пишет что в дух местах
[Linker Warning] Public symbol '_m_speed0' defined in both module C:\USERS\ALEX\DESKTOP\R-TERM_OOP\UNIT1.OBJ and C:\USERS\ALEX\DESKTOP\R-TERM_OOP\ROBO.OBJ

Добавлено через 1 минуту
Цитата Сообщение от Programmer. Посмотреть сообщение
Korbofos,
1. Где у вас коструктор класса и деструктор?
2. class Com
{
Что ето такое в начале ?
почему вы создаёте 2 одинаковых класса?
Это я накасячил когда копировал с билдера)
А костуктор как мне кажется здесь не нужен
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
08.02.2012, 22:13
C++
1
2
3
4
#ifndef Def_H
#define Def_H
// здесь Ваши дефайны
#endif
Такая конструкция (вместо Def_H уникальное имя) должна быть в любом Вашем hpp файле, она защищает от множественного подключения одного и товоже заголовочного файла.
0
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
08.02.2012, 22:19  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef defH
#define defH
#define Up_ON m_speed0=1; m_speed1=255; m_speed2=255;
#define Up_OFF m_speed0=1; m_speed1=0; m_speed2=0;
#define Down_ON m_speed0=4; m_speed1=255; m_speed2=255;
#define Down_OFF m_speed0=4; m_speed1=0; m_speed2=0;
#define Left_ON m_speed0=2; m_speed1=210; m_speed2=210;
#define Left_OFF m_speed0=2; m_speed1=0; m_speed2=0;
#define Right_ON m_speed0=3; m_speed1=210; m_speed2=210;
#define Right_OFF m_speed0=3; m_speed1=0; m_speed2=0;
#endif
Так и есть всё ровно ругается
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
08.02.2012, 22:24
Попробуйте откомпилировать не F9, а сделав Build
0
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
08.02.2012, 22:32  [ТС]
Также

Может дело в этих переменных?
объявлены в unit.cpp
unsigned char m_speed0=1, m_speed1=0, m_speed2=0;
в остальных модулях extern
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
08.02.2012, 22:47
C++
1
#define Up_ON m_speed0=1; m_speed1=255; m_speed2=255;
а можно поинтересоваться в каком контексте используется эта строчка?
Переменные m_speed0 итд уже определены?
Точное сообщение об ошибки.
Текст модуля Robo и Unit1 или весь проект (лучше как вложение)
1
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
08.02.2012, 22:55  [ТС]
Вот функция и проэкт целиком
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
void Robo::calc(void)
{
static bool back_need=0;
static unsigned char direct, count;
static int need_azimuth;
if(!sensor_data)
{
 
  if((l_centr>bar)&&(r_centr>bar)){Up_ON;}
  if((l_centr<bar)&&(r_centr<bar))
    {
    if(right>left){Left_ON;}
    if(right<left){Right_ON;}
    if(right==left){Right_ON;}
    }
  if((l_centr>bar)&&(r_centr<bar))
    {
    if(left>bar){Left_ON;}
    if((left<bar)&&(right>bar)){Right_ON;}
    if((left<bar)&&(right<bar)){Left_ON;}
    }
  if((l_centr<bar)&&(r_centr>bar))
    {
    if(right>bar){Right_ON;}
    if((left>bar)&&(right<bar)){Left_ON;}
    if((left<bar)&&(right<bar)){Right_ON;}
    }
  if((l_centr<20)&&(r_centr<20)){Down_ON;back_need=1;}
 
 
  if(m_speed0==(1||4)){count=0;}
  else{if(m_speed0!=direct)count++;}
 
  if(count>3)
   {
    switch(direct)
    {
     case 2:
     Left_ON;
     break;
     case 3:
     Right_ON;
     break;
    }
  } //Возможно нужно будет добавить count=0;
}
if(sensor_data)
{
back_need=1;
counter_cycle=0;
Down_ON;
}
 
if(back_need&&(!sensor_data))
{
Down_ON;
if(counter_cycle>50)backward_turn=1;
}
 
if(backward_turn&&(!sensor_data))
{
  if(back_need)
  {
  need_azimuth=0;
  if(azimuth>180) need_azimuth-=180;
  else need_azimuth+=180;
  back_need=0;
  }
 
if(azimuth>need_azimuth)Left_ON;
if(azimuth<need_azimuth)Right_ON;
if(azimuth==((need_azimuth+1)||(need_azimuth+2)||(need_azimuth)||(need_azimuth-1)||(need_azimuth-3)))backward_turn=0;
}
 
pwm_ready=1;
set_speed=1;
direct=m_speed0;
to_calculate=0;
}
Вложения
Тип файла: rar R-term_oop.rar (825.3 Кб, 5 просмотров)
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
08.02.2012, 23:21
В модуле Robo перепишите строчку на:
C++
1
extern unsigned char m_speed0, m_speed1, m_speed2;
а значение задайте в функции.

ИМХО:Для "С++" использовать "extern" в стиле "С" не очень красиво. Я бы на Вашем месте перепроектировал эту часть программы.
1
09.02.2012, 01:56
 Комментарий модератора 
Не стоит делать из темы свалку.
Правила
2.4. На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в ответах и облегчает поиск.
Тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2012, 01:56
Помогаю со студенческими работами здесь

глобальные переменные
Уважаемые коллеги! Встал в тупик, пытаясь организовать связь двух модулей через глобальную переменную. Создаю 3 файла: ...

Глобальные переменные
Как в C++ описывать глобальные переменные(чтоб к одной и то й же переменной можно было обращаться из разных юнитов) ? Если можно...

С++ Builder глобальные обьекты
Вопрос есть 2 формы в обеих подключен MyHeader.h в этой хедере обьявлен класс, так вот как мне создать объект что бы он был виден в обоих...

Во фреймах обнуляются глобальные переменные
Существует форма и фрейм на ней. В заголовочном файле формы существует глобальная переменная, которая хранит какое-то значение (не равное...

Глобальные переменные на несколько форм
Пишу в билдере 2009. Такая проблема. Не получается создать глобальные переменные, чтобы они были доступны в нескольких формах, допустим в...


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

Или воспользуйтесь поиском по форуму:
13
Закрытая тема Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru