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

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

Войти
Регистрация
Восстановить пароль
 
 
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
#1

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

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

у меня есть "definefile.h" в котором объявлено много дефайнов. Я хочу что бы этот файл можно было подключать через #include и пользоваться дефайнами. Можно ли так сделать? Если нет, как можно что нибудь подобное реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2016, 11:48     Как сделать #define глобальным?
Посмотрите здесь:

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

#define работает не так, как ожидается - C++
Здравствуйте. Подскажите, пожалуйста, почему в таком случае некорректно использовать #define: switch (kind) { case 1: ...

Есть ли замена функциям как, например, define? - C++
Недавно из прочитанной статьи о директивах препроцессора define узнал, что ее (define) можно применять и в качестве функции: #define...

Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик. - C++
Есть файл Point.h: #ifndef POINT_GUARD #define POINT_GUARD ...

Почему нельзя использовать в операторе case переменные, которые определены как #define - C++
Я не понимаю, почему Visual Studio ругается на строку с case в коде. Вроде все правильно. Если там написать напрямую цифру, тогда все...

#define - C++
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем недавно, поэтому толком ничего не знаю Во-первых,...

#define - C++
#define зачем нужна это заголовочный файл какие у него функции и как им ползоватса?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tenebris
2 / 2 / 0
Регистрация: 30.06.2015
Сообщений: 40
01.06.2016, 12:44     Как сделать #define глобальным? #2
#include "definefile.h" (если рядом с проектом) если нет прописываешь полный путь #include "C:/.../definefile.h" или вопрос не в этом?
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 12:57  [ТС]     Как сделать #define глобальным? #3
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h. Я думал что они должны были быть, но они не видны.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
01.06.2016, 13:13     Как сделать #define глобальным? #4
Цитата Сообщение от fryn3 Посмотреть сообщение
не видны дефайны
Они и не могут быть видны. Их видит только препроцессор.
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 13:29  [ТС]     Как сделать #define глобальным? #5
хочу сказать что я в коде использую дефайны, а IDE ругается, что они не объявлены
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,636
01.06.2016, 13:35     Как сделать #define глобальным? #6
Цитата Сообщение от fryn3 Посмотреть сообщение
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h.
Скиньте минимальный пример уровня "вот здесь у меня #define test "test", вот здесь cout<<test, но компилятор на cout<<test ругается". Все что не связано с проблемой - нещадно из примера вырезайте.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
01.06.2016, 13:39     Как сделать #define глобальным? #7
fryn3, а вы их, надеюсь, в definefile.h прописали, а не в definefile.cpp?
Tenebris
2 / 2 / 0
Регистрация: 30.06.2015
Сообщений: 40
01.06.2016, 14:26     Как сделать #define глобальным? #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);
}
норм?
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 15:22  [ТС]     Как сделать #define глобальным? #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. может поэтому не работает?
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,636
01.06.2016, 16:48     Как сделать #define глобальным? #10
Может, оно на прагме падает? Попробуйте вместо прагмы:
C++
1
2
3
4
5
#ifndef HEADERFILE_H
#define HEADERFILE_H
#define one 1
#define two 2
#endif // HEADERFILE_H
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 16:53  [ТС]     Как сделать #define глобальным? #11
В Kail пробовал и так:
C++
1
2
3
4
#ifndef HEADERFILE_H
#define HEADERFILE_H
...
#endif // HEADERFILE_H
И без этого. Все равно не видит дефайны(
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.06.2016, 17:52     Как сделать #define глобальным? #12
В "С99 Mode" нет std::cout.
Как ругается компилятор?
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 18:07  [ТС]     Как сделать #define глобальным? #13
Цитата Сообщение от castaway Посмотреть сообщение
В "С99 Mode" нет std::cout.
Как ругается компилятор?
Вы не поняли... То что скинул, это пример как я работаю с дэфайном. А сам рабочий проект очень это программа для микроконтроллера
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.06.2016, 18:17     Как сделать #define глобальным? #14
Цитата Сообщение от fryn3 Посмотреть сообщение
Вы не поняли...
Вы тоже.
Цитата Сообщение от castaway Посмотреть сообщение
Как ругается компилятор?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2016, 18:19     Как сделать #define глобальным?
Еще ссылки по теме:

#define c :: - C++
Подскажите как реализовать такую замену: #define sa2::sys::getClientKernel()-&gt;getXDBTManager() cls_SimpleXDBTManager::Instance() ...

c++11 и $define - C++
Есть код который прекрасно компилируется без -std=c++11, но как только я включаю эту опцию то константы препроцессора не заменяются и...

define - C++
Всем здрасьте , что означает эта строчка? #define MAX(a,b) a&gt;b? a:b

define - C++
И еще такой вопрос для чего служит #define ??

define не - C++
Здравствуйте. &quot;Дефайню&quot; &quot;%f&quot; для вывода: #define fss &quot;%f&quot;; . И потом делаю вывод вот такой вот: for(i=0;i&lt;n;i++) fscanf(in,fss,&amp;a-&gt;di);. И...


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

Или воспользуйтесь поиском по форуму:
fryn3
3 / 3 / 0
Регистрация: 03.07.2013
Сообщений: 56
01.06.2016, 18:19  [ТС]     Как сделать #define глобальным? #15
Дефайн не объявлен
"error: #20: identifier "MainProgVersion" is undefined"

хотя он в define.h есть и файл подключен
Yandex
Объявления
01.06.2016, 18:19     Как сделать #define глобальным?
Ответ Создать тему
Опции темы

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