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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Что лучше использовать, #define или typedef? - C++

29.07.2013, 13:37. Просмотров 1481. Ответов 14
Метки нет (Все метки)

Вот привожу пример программы. Здесь можно и с #define сделать и с typedef.
Программа в любом случае будет прекрасно работать. Там что же использовать?

C++
1
2
3
4
5
6
7
8
//#define ui unsigned int
typedef unsigned int ui;
 
 
int main()
{
    ui n = 5;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 13:37     Что лучше использовать, #define или typedef?
Посмотрите здесь:

C++ Что лучше использовать, матрицу или списки?
C++ Что лучше использовать vector или массив
C++ Что лучше использовать для низкоуровневого программирования?
C++ Проблема с define и typedef
C++ Пытаться ли использовать Windows forms с C++? Или лучше иди в C#?
C++ Что лучше использовать для работы со строками класс wstring или wchar_t напрямую?
Что лучше использовать? Шаг переменной dx C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
29.07.2013, 13:43     Что лучше использовать, #define или typedef? #2
C++
1
2
3
4
5
#define unsigned int ui
 
//  где то в коде, возможно это имя функции или переменной
void gui(/*че то чето*/)
//  и дальше код
удачной компиляции...
Dani
29.07.2013, 13:48
  #3

Не по теме:

Kukurudza, неет, удачной компиляции - это #define true false

BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
29.07.2013, 13:55  [ТС]     Что лучше использовать, #define или typedef? #4
Цитата Сообщение от Kukurudza Посмотреть сообщение
удачной компиляции...
все компилируется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
#define ui unsigned int
 
void gui()
{
    std::cout << "gui";
}
 
int main()
{
    gui();
 
    system("pause");
    return 0;
}
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
29.07.2013, 14:03     Что лучше использовать, #define или typedef? #5
блин неудачный пример привел в начале. вот такой попробуйте скомпилить
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
#define ui unsigned int
 
int main() {
    int ui = 6;
 
    system("pause");
    return 0;
}
смысл то вот в чем. задефайнили вы где то в глубине проекта какую нить фигню, ну и естественно через месяц разработки забыли, или вообще ваш партнер об этом дефайне слыхать не слышал, ибо репозиторий не разбирал.
ну и собственно через месяц вы можете напороться на такую фигню.
SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
29.07.2013, 14:04     Что лучше использовать, #define или typedef? #6
Kukurudza, да ну.
C++
1
2
3
#define ui 666
int ui = 9; // Заругает
int gui = 9; // Все хорошо
В gui не будет подмены части имени.
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.07.2013, 14:04     Что лучше использовать, #define или typedef? #7
Цитата Сообщение от BigLow Посмотреть сообщение
Там что же использовать?
С++11
C++
1
using ui = unsigned int;
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
29.07.2013, 14:06     Что лучше использовать, #define или typedef? #8
SatanaXIII, угумс, ступил. пост №5
Убежденный
Системный программист
Эксперт С++
15104 / 6799 / 1073
Регистрация: 02.05.2013
Сообщений: 11,112
Завершенные тесты: 1
29.07.2013, 14:10     Что лучше использовать, #define или typedef? #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от BigLow Посмотреть сообщение
Программа в любом случае будет прекрасно работать. Там что же использовать?
Для данного кода - все равно. Он минимален, не имеет зависимостей, и изменения,
сделанные в нем, локальны, то есть, не распостраняются в другие компоненты.
В серъезном проекте лучше воздержаться от define, так как это очень грубое и
плохоуправляемое средство. Включите один раз define в заголовочный файл - и
он "заразит" все зависимые исходники, не обращая внимания на неймспейсы и
прочие области видимости. typedef в этом плане более "деликатен".
Croessmah
Модератор
Эксперт CЭксперт С++
12885 / 7271 / 810
Регистрация: 27.09.2012
Сообщений: 17,970
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 14:33     Что лучше использовать, #define или typedef? #10
Стоит понять всего одну вещь - с define работает препроцессор, а typedef обрабатывается уже при компиляции.

К тому же есть undef, если что
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
29.07.2013, 14:38     Что лучше использовать, #define или typedef? #11
Croessmah не очень удобно андеф эзать
Croessmah
Модератор
Эксперт CЭксперт С++
12885 / 7271 / 810
Регистрация: 27.09.2012
Сообщений: 17,970
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 14:47     Что лучше использовать, #define или typedef? #12
Так же вот такое различие очень даже существенное:
C++
1
2
3
typedef int mytype;
mytype obj;
obj.~mytype()
Так что typedef - это не просто тупая замена имени
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.07.2013, 14:56     Что лучше использовать, #define или typedef? #13
Цитата Сообщение от Croessmah Посмотреть сообщение
obj.~mytype()
Забавно. Но какой от этого прок?
Croessmah
Модератор
Эксперт CЭксперт С++
12885 / 7271 / 810
Регистрация: 27.09.2012
Сообщений: 17,970
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 15:04     Что лучше использовать, #define или typedef? #14
Tulosba, когда не известен тип объекта и неизвестно есть ли у этого типа деструктор.
Например, в шаблонах тоже самое - не важно есть ли у типа деструктор - вы просто пишите один код для всех типов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 17:24     Что лучше использовать, #define или typedef?
Еще ссылки по теме:

Что лучше использовать для свойств объекта? C++
C++ Что лучше использовать: псевдокод или блок-схемы?
C++ vs C#. Что лучше использовать для поставленных задач? C++
Что лучше использовать: string или char[]? C++
C++ Что лучше использовать для строк? Массив char или же string?

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

Или воспользуйтесь поиском по форуму:
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
29.07.2013, 17:24     Что лучше использовать, #define или typedef? #15
Цитата Сообщение от BigLow Посмотреть сообщение
Здесь можно и с #define сделать и с typedef.
Программа в любом случае будет прекрасно работать.
#define - это #define, typedef - это typedef typedef в отличии от #define не занимается простой подстановкой текста, в этом достаточно легко убедиться на примере указателей и ссылок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
#define std_string_ref_t std::string&
//typedef std::string& std_string_ref_t;
 
int main()
{
    std::string s = "text";
    std_string_ref_t r1 = s, r2 = s;
    s = "TEXT";
    std::cout << "r1 = " << r1 << ", r2 = " << r2 << '\n';
}
Yandex
Объявления
29.07.2013, 17:24     Что лучше использовать, #define или typedef?
Ответ Создать тему
Опции темы

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