Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
1

Как сделать #define глобальным?

01.06.2016, 11:48. Показов 3584. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
у меня есть "definefile.h" в котором объявлено много дефайнов. Я хочу что бы этот файл можно было подключать через #include и пользоваться дефайнами. Можно ли так сделать? Если нет, как можно что нибудь подобное реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2016, 11:48
Ответы с готовыми решениями:

Как сделать #define глобальным?
У меня не получается определить DEBUG, хотя я его объявил в подключенном файле config.h //...

Как сделать динамический массив глобальным
Нужно что бы создание, ввод и вывод были в разных функциях #include "pch.h" #include...

Как сделать комплексное число глобальным, для дальнейшего использования?
Мне нужно чтобы а1, а2, а3 можно было использовать дальше, return a1,a2,a3; почему то не помогает...

Как сделать из #define строку?
Как сделать из #define-переменной строку? Я компилирую с флагом -DVERSION=`git tag | head -n 1`,...

17
3 / 3 / 1
Регистрация: 30.06.2015
Сообщений: 40
01.06.2016, 12:44 2
#include "definefile.h" (если рядом с проектом) если нет прописываешь полный путь #include "C:/.../definefile.h" или вопрос не в этом?
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 12:57  [ТС] 3
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h. Я думал что они должны были быть, но они не видны.
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
01.06.2016, 13:13 4
Цитата Сообщение от fryn3 Посмотреть сообщение
не видны дефайны
Они и не могут быть видны. Их видит только препроцессор.
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 13:29  [ТС] 5
хочу сказать что я в коде использую дефайны, а IDE ругается, что они не объявлены
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
01.06.2016, 13:35 6
Цитата Сообщение от fryn3 Посмотреть сообщение
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h.
Скиньте минимальный пример уровня "вот здесь у меня #define test "test", вот здесь cout<<test, но компилятор на cout<<test ругается". Все что не связано с проблемой - нещадно из примера вырезайте.
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
01.06.2016, 13:39 7
fryn3, а вы их, надеюсь, в definefile.h прописали, а не в definefile.cpp?
0
3 / 3 / 1
Регистрация: 30.06.2015
Сообщений: 40
01.06.2016, 14:26 8
C++
1
2
3
4
5
6
7
8
#include <iostream>
#define Summ(x,y) ((x)+(y))
using namespace std;
 
int main()
{
    cout<<Summ(10,20);
}
норм?
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 15:22  [ТС] 9
Ребята, я создал проект в вижуале и сделал аналогию, и у меня все работает.
Кликните здесь для просмотра всего текста

main.cpp
C++
1
2
3
4
5
6
7
#include "OtherFile.h"
 
int main()
{
    test();
    return 0;
}
HeaderFile.h
C++
1
2
3
#pragma once
#define one 1
#define two 2
OtherFile.h
C++
1
2
3
4
5
#pragma once
#include <iostream>
#include "HeaderFile.h"
 
void test();
OtherFile.cpp
C++
1
2
3
4
5
6
#include "OtherFile.h"
 
void test()
{
    std::cout << one << std::endl << two << std::endl;
}



Но я пишу в IDE Kail на С99 Mode. может поэтому не работает?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
01.06.2016, 16:48 10
Может, оно на прагме падает? Попробуйте вместо прагмы:
C++
1
2
3
4
5
#ifndef HEADERFILE_H
#define HEADERFILE_H
#define one 1
#define two 2
#endif // HEADERFILE_H
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 16:53  [ТС] 11
В Kail пробовал и так:
C++
1
2
3
4
#ifndef HEADERFILE_H
#define HEADERFILE_H
...
#endif // HEADERFILE_H
И без этого. Все равно не видит дефайны(
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
01.06.2016, 17:52 12
В "С99 Mode" нет std::cout.
Как ругается компилятор?
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 18:07  [ТС] 13
Цитата Сообщение от castaway Посмотреть сообщение
В "С99 Mode" нет std::cout.
Как ругается компилятор?
Вы не поняли... То что скинул, это пример как я работаю с дэфайном. А сам рабочий проект очень это программа для микроконтроллера
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
01.06.2016, 18:17 14
Цитата Сообщение от fryn3 Посмотреть сообщение
Вы не поняли...
Вы тоже.
Цитата Сообщение от castaway Посмотреть сообщение
Как ругается компилятор?
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
01.06.2016, 18:19  [ТС] 15
Дефайн не объявлен
"error: #20: identifier "MainProgVersion" is undefined"

хотя он в define.h есть и файл подключен
0
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
01.06.2016, 18:37 16
А Вам именно этот пример такую ошибку выдает? просто в нем кроме "#pragma once"(который не всеми компиляторами поддерживается) я проблем не обнаружил(несколько лишних подключений погоду не играют).
0
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
02.06.2016, 10:37  [ТС] 17
Нет,
Цитата Сообщение от fryn3 Посмотреть сообщение
Вы не поняли... То что скинул, это пример как я работаю с дэфайном. А сам рабочий проект очень это программа для микроконтроллера
Я принцип показываю как у меня организовано.
0
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
05.06.2016, 17:44 18
Цитата Сообщение от fryn3 Посмотреть сообщение
Я принцип показываю как у меня организовано.
я понял что это принцип, который вы написали специально, чтобы показать на форуме, но мне кажется, что этот принцип и ваш рабочий проект не совсем одинаково работают(в примере нет тех же ошибок, которые есть в проекте), по этому то я и спросил - выдает ли именно этот пример такие ошибки.
0
05.06.2016, 17:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2016, 17:44
Помогаю со студенческими работами здесь

Несколько файлов в проекте. Как обращаться к глобальным переменным и структурам?
//file1.cpp #include &lt;iostream&gt; #include &quot;Header.h&quot; int global = 1; struct globalstruct {int...

Как сделать TStringList глобальным?
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

Как локальный сервер сделать глобальным
Прив. Установлено Apache+php+mysql+phpmyadmin. Зарегал хост на no-ip. Скачал спец прогу, которая...

Как сделать глобальным событие для кнопки?
Добрый вечер, форум. В рамках данной программы мне необходимо, чтобы при нажатии на button2...


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

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