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

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

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

C++ define
C++ Как влияет inline и обертка(#ifndef #define #endif) .h файла на компоновщик.
C++ Есть ли замена функциям как, например, define?
define не C++
#define работает не так, как ожидается C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tenebris
2 / 2 / 0
Регистрация: 30.06.2015
Сообщений: 36
01.06.2016, 12:44     Как сделать #define глобальным? #2
#include "definefile.h" (если рядом с проектом) если нет прописываешь полный путь #include "C:/.../definefile.h" или вопрос не в этом?
fryn3
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
01.06.2016, 12:57  [ТС]     Как сделать #define глобальным? #3
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h. Я думал что они должны были быть, но они не видны.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5437 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
01.06.2016, 13:13     Как сделать #define глобальным? #4
Цитата Сообщение от fryn3 Посмотреть сообщение
не видны дефайны
Они и не могут быть видны. Их видит только препроцессор.
fryn3
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
01.06.2016, 13:29  [ТС]     Как сделать #define глобальным? #5
хочу сказать что я в коде использую дефайны, а IDE ругается, что они не объявлены
Renji
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,950
01.06.2016, 13:35     Как сделать #define глобальным? #6
Цитата Сообщение от fryn3 Посмотреть сообщение
#include "definefile.h" - на это не ругается. Просто в файле где я добавляю этот файл не видны дефайны definefile.h.
Скиньте минимальный пример уровня "вот здесь у меня #define test "test", вот здесь cout<<test, но компилятор на cout<<test ругается". Все что не связано с проблемой - нещадно из примера вырезайте.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5437 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
01.06.2016, 13:39     Как сделать #define глобальным? #7
fryn3, а вы их, надеюсь, в definefile.h прописали, а не в definefile.cpp?
Tenebris
2 / 2 / 0
Регистрация: 30.06.2015
Сообщений: 36
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
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
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
1533 / 981 / 239
Регистрация: 05.06.2014
Сообщений: 2,950
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
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
01.06.2016, 16:53  [ТС]     Как сделать #define глобальным? #11
В Kail пробовал и так:
C++
1
2
3
4
#ifndef HEADERFILE_H
#define HEADERFILE_H
...
#endif // HEADERFILE_H
И без этого. Все равно не видит дефайны(
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.06.2016, 17:52     Как сделать #define глобальным? #12
В "С99 Mode" нет std::cout.
Как ругается компилятор?
fryn3
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
01.06.2016, 18:07  [ТС]     Как сделать #define глобальным? #13
Цитата Сообщение от castaway Посмотреть сообщение
В "С99 Mode" нет std::cout.
Как ругается компилятор?
Вы не поняли... То что скинул, это пример как я работаю с дэфайном. А сам рабочий проект очень это программа для микроконтроллера
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
01.06.2016, 18:17     Как сделать #define глобальным? #14
Цитата Сообщение от fryn3 Посмотреть сообщение
Вы не поняли...
Вы тоже.
Цитата Сообщение от castaway Посмотреть сообщение
Как ругается компилятор?
fryn3
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
01.06.2016, 18:19  [ТС]     Как сделать #define глобальным? #15
Дефайн не объявлен
"error: #20: identifier "MainProgVersion" is undefined"

хотя он в define.h есть и файл подключен
Stitch Igorek
 Аватар для Stitch Igorek
44 / 44 / 17
Регистрация: 02.04.2016
Сообщений: 300
Завершенные тесты: 1
01.06.2016, 18:37     Как сделать #define глобальным? #16
А Вам именно этот пример такую ошибку выдает? просто в нем кроме "#pragma once"(который не всеми компиляторами поддерживается) я проблем не обнаружил(несколько лишних подключений погоду не играют).
fryn3
2 / 2 / 0
Регистрация: 03.07.2013
Сообщений: 54
02.06.2016, 10:37  [ТС]     Как сделать #define глобальным? #17
Нет,
Цитата Сообщение от fryn3 Посмотреть сообщение
Вы не поняли... То что скинул, это пример как я работаю с дэфайном. А сам рабочий проект очень это программа для микроконтроллера
Я принцип показываю как у меня организовано.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2016, 17:44     Как сделать #define глобальным?
Еще ссылки по теме:

Почему нельзя использовать в операторе case переменные, которые определены как #define C++
C++ #define c ::
C++ Как сделать из #define строку?

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

Или воспользуйтесь поиском по форуму:
Stitch Igorek
 Аватар для Stitch Igorek
44 / 44 / 17
Регистрация: 02.04.2016
Сообщений: 300
Завершенные тесты: 1
05.06.2016, 17:44     Как сделать #define глобальным? #18
Цитата Сообщение от fryn3 Посмотреть сообщение
Я принцип показываю как у меня организовано.
я понял что это принцип, который вы написали специально, чтобы показать на форуме, но мне кажется, что этот принцип и ваш рабочий проект не совсем одинаково работают(в примере нет тех же ошибок, которые есть в проекте), по этому то я и спросил - выдает ли именно этот пример такие ошибки.
Yandex
Объявления
05.06.2016, 17:44     Как сделать #define глобальным?
Ответ Создать тему
Опции темы

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