LINUX.ORG.RU

Linux и макрос define


0

0

В статье про define и include вспомнил о втором применении define, как макроса. Только не могу понять, неужели риск использовать макросы define, в место простеньких функций не стоит того, что бы уменьшить размер кода и улучшить наглядность?


Ответ на: комментарий от suzuki

> Конкретнее?

libpng, Qt, freetype, icu, antrl, curl, ace и т.д. и т.п., это относится к практически любой качественной и широко используемой библиотеке

lester ★★★★
()
Ответ на: комментарий от suzuki

> я знаю много программ и библиотек

Только не нужно называть gcc


o_O, по-моему с русским проблемы у вас

lester ★★★★
()
Ответ на: комментарий от lester

> > > я знаю много программ и библиотек

Только не нужно называть gcc

o_O, по-моему с русским проблемы у вас

Ах да, gcc не программа.

А можешь ответить на пост, где я спросил про компиляторы?

suzuki
()
Ответ на: комментарий от suzuki

> А можешь ответить на пост, где я спросил про компиляторы?

«он не поддерживает c99» - что же вы тогда имели ввиду под этой фразой?

lester ★★★★
()
Ответ на: комментарий от lester

> «он не поддерживает c99» - что же вы тогда имели ввиду под этой фразой?

Очевидно, что о поддержке компиляции кода, соответсвующему стандарту c99.

Не надоело строить из себя дурака?

suzuki
()
Ответ на: комментарий от lester

offtopic

По существу ответить не можешь? И скажи, нафыига ты тролишь? Какое-то странное удовольствие получаешь?

P.S. Пользуясь случаем (и из-за невозможности завести тему/ответить в тематическом разделе Linux.org.ru) - баг. После бана (и до разлогина) нельзя редактировать данные о себе, как то убрать/поменять e-mail/etc, но можно удалить аватару. Так и нужно, или тут какая-то неконсистентность?

anonymous
()
Ответ на: offtopic от anonymous

> По существу ответить не можешь?

suzuki сам ответил на свой вопрос - вы предлагаете мне повторить его ответ?

lester ★★★★
()
Ответ на: комментарий от suzuki

> Если max - это макрос, вычисляющий аргументы более 1 одного раза, то всё будет работать некорректно. Если функция/шаблон - то всё будет чётко.

Я знаю, капитан. Моя фраза относилась к тому случаю, когда повторное вычисление не приводит к изменениям

yoghurt ★★★★★
()
Ответ на: комментарий от true_admin

Не понял, какое голосование?

Лучше бы баг (если это баг) засабмитил.

anonymous
()
Ответ на: комментарий от lester

>если в аргументах будет вызов функций, да еще и таких, что возвращают результат зависящий не только от входных параметров - также бить по рукам

Зачем по-твоему вообще нужны макросы?

Absurd ★★★
()

Собственно, раз уж речь зашла о C99, то почему бы не юзать в сабжевых случаях inline-функции?

Gvidon ★★★★
()
Ответ на: комментарий от Absurd

> Зачем по-твоему вообще нужны макросы?

а головой подумать? макросы бывают не только свои, во что они разворачиваются( а в случае, например, wx - вложенность макросов в 5-6 уровней это реалии жизни ) - каждый раз смотреть не будешь, потому логично сразу писать так, чтоб потом не было мучительно больно, тоже касается и «своих» макросов, т.к. использовать расширения gcc - это сознательно прибивать код к определенному компилятору, что, как я уже писал, не есть хорошо

lester ★★★★
()
Ответ на: комментарий от suzuki

>Да, у тебя неправильно. Вот, лучше так (ахтунг, гну!):

#define MAX(x,y) ({ typeof(x) X_ = (x); typeof(y) Y_ = (y); X_>Y_?X_:Y_; })

неправильно. Бегом матчасть учить: #define MAX(x,y) (x >? y)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.