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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
GroundZero
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 9
#1

непонятня смысловая нагрузка (#define _In_) - C++

01.11.2013, 14:03. Просмотров 1469. Ответов 37
Метки нет (Все метки)

#define _In_

SWITCH_DECLARE(const switch_state_handler_table_t *) switch_core_get_state_handler(_In_ int index);

Не понятно зачем объявляется _In_
и какую смысловую нагрузку он несет во входном параметре (_In_ int index)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2013, 14:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос непонятня смысловая нагрузка (#define _In_) (C++):

смысловая задача - C++
Вычислить значение квадратов четных чисел натурального ряда от K до M.

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
01.11.2013, 14:54 #16
Цитата Сообщение от Croessmah Посмотреть сообщение
Да можно многое намудрить
Атас!
Цитата Сообщение от ninja2 Посмотреть сообщение
inline функции или макросы
Если писать на плюсах, то "лучше" inline, если на чистом, то "лучше" макросы. А вообще на вкус и цвет.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.11.2013, 14:57 #17
Цитата Сообщение от ninja2 Посмотреть сообщение
А что лучше использовать inline функции или макросы?"
inline функции
макросы обрабатывает препроцессор, точнее не обрабатывает а подставляет значения
и потом в действие вступает компилятор
а inline обрабатывает компилятор
например
C++
1
2
#define mul(a,b) a*b
inline int mul(int a, int b){ return a*b;}
и вызовем так
C++
1
mul(c+d,e+f);
в случае с макросом мы получим
c+d*e+f,что не есть правда
а с inline такого косяка не будет
Цитата Сообщение от ninja2 Посмотреть сообщение
по идее код получиться один и тот же
как видишь нет
зайди в блог к Evg у него рассматривается использование макросов достоинства и недостатки

Добавлено через 1 минуту
Цитата Сообщение от SatanaXIII Посмотреть сообщение
если на чистом, то "лучше" макросы.
а что в Си inline разрешили?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
01.11.2013, 15:00 #18
Цитата Сообщение от ValeryS Посмотреть сообщение
и вызовем так
ну так макросы тоже нужно писать нормально )))
C++
1
#define mul(a,b) (a)*(b)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 15:02 #19
C++
1
#define mul(a,b) ((a)*(b))
Croessmah
01.11.2013, 15:03
  #20

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
а что в Си inline разрешили?
да вроде как давно уже

ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.11.2013, 15:05 #21
Croessmah, castaway,
или вы думаете я этого не знаю?
специально показал "тонкое место"
второе нет анализа входных параметров в макросе запросто можно сложить например два адреса
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.11.2013, 15:06 #22
ValeryS, я просто немного поправил Croessmah.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.11.2013, 15:06 #23
Цитата Сообщение от Croessmah Посмотреть сообщение
да вроде как давно уже
не знал
но мои компиляторы для микропроцессоров посылают меня с inline
да и почему тогда на Си лучше писать макросами?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
01.11.2013, 15:10 #24
Цитата Сообщение от ValeryS Посмотреть сообщение
второе нет анализа входных параметров в макросе запросто можно сложить например два адреса
имхо, основной недостаток в том, что пишем один код, а на вход компилятору попадает уже измененный и это может стать источником трудноуловимых ошибок.

Не по теме:

Добавлено через 2 минуты

Цитата Сообщение от ValeryS Посмотреть сообщение
не знал
но мои компиляторы для микропроцессоров посылают меня с inline
http://ideone.com/UT0khT
Если не ошибаюсь, то в C99 уже был inline

ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.11.2013, 15:13 #25
Цитата Сообщение от Croessmah Посмотреть сообщение
а на вход компилятору попадает уже измененный и это может стать источником трудноуловимых ошибок.
и это тоже
поставь случайно в макросе точку с запятой, я часто их на "автомате" ставлю.
компилятор даст ошибку в строке включения макроса а не в определении
C++
1
2
3
#define MAX 10;// здесь ошибку не покажет
...................
if(MAX>a)// вот здесь выдаст ошибку
и сиди и думай что в этой строке не то
castaway
01.11.2013, 15:15
  #26

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
и сиди и думай что в этой строке не то
Да уж.. тут есть над чем подумать))

Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.11.2013, 15:40 #27
Цитата Сообщение от ValeryS Посмотреть сообщение
и сиди и думай что в этой строке не то
Обычно одного раза достаточно на такое напороться, понять что к чему и в другой раз уже быстро исправить ошибку. Хотя лучше использовать const.
Собственно если вместо директив препроцессора можно использовать конструкции языка их и следует использовать.
Evg
Эксперт CАвтор FAQ
17625 / 5849 / 376
Регистрация: 30.03.2009
Сообщений: 16,133
Записей в блоге: 26
01.11.2013, 16:16 #28
Цитата Сообщение от Tulosba Посмотреть сообщение
Собственно если вместо директив препроцессора можно использовать конструкции языка их и следует использовать.
Именно так
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.11.2013, 16:53 #29
Я от щас книгу почитываю http://www.ozon.ru/context/detail/id/18817437/ , и там говориться, дословно не помню, но вроде как есть люди которые против макросов, макросы не нужно использовать и всякая фигня, а вы откройте любой файл заголовочный и посмотрите сколько там макросов, как говориться время поставит всех на свои места и те кто так говорил типо проехали, макросы широко используются и лучше раз выучить тему и потом уже не делать ошибки. Типо макрос как бы сильный инструмент в принципе если с умом им пользоваться так оно и есть, хотя бы использовать в качестве DEBUG уже сила. Я от например уже 1.5 к строк написал и ввел переменную int debug и каждый раз ее проверял если true то выполняю определенный код, а щас поисправлял все на #define DEBUG #ifdef DEBUG #endif. Просто если в программе этих if(debug) там штук 5 то ничего, а если их сотни, то это значительно замедлит программу.

Добавлено через 3 минуты
Автор короче пропагандирует макросы использовать, да я думаю не нужно цуратса их использовать.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.11.2013, 16:59 #30
Цитата Сообщение от ninja2 Посмотреть сообщение
как макросы не нужно использовать и всякая фигня,
слишком категоричное утверждение
есть например когда без макроса никуда
условная компиляция например ,одну из них ты привел
а если код пишем мультиплатформенный и определенные действия нужны для линукс а другие для винды
как тут без макросов? каждый раз код переписывать
другое дело что макросы не нужны для констант и встраиваемых функциях
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 16:59
Привет! Вот еще темы с ответами:

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

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

#define VS inline - C++
Что работает быстрее: #define SQR(x) x*x void Func() { for(int i = 0; i < 10; ++i) { cout << SQR(i) << endl; ...

inline и define - C++
Почему использовать inline-функции лучше, чем использовать команду препроцессора #define? Смысл в том, что лучше лишний раз не трогать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.11.2013, 16:59
Ответ Создать тему
Опции темы

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