<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Трюк с #define</title>
		<description>Discuss Трюк с #define</description>
		<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html</link>
		<lastBuildDate>Mon, 13 Apr 2026 08:22:53 +0000</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="https://chipenable.ru/index.php/component/jcomments/feed/com_k2/21.html" rel="self" type="application/rss+xml" />
		<item>
			<title>Snake says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-4466</link>
			<description><![CDATA[А так не? #define StartAdc() (ADCSRA |= 1]]></description>
			<dc:creator>Snake</dc:creator>
			<pubDate>Sat, 07 Mar 2015 18:39:53 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-4466</guid>
		</item>
		<item>
			<title>wukrlvy says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-2034</link>
			<description><![CDATA[Макрос #define в программировани и на СИ - это, беспорно, зло. Достаточно заглянуть в один из системных заголовочных файлов, например, iomacro.h, где сосредоточены определения для SFR регистров. Наворотив там комплекс неименованных структур и объединений, фирма IAR достаточно эффективно решила проблему с правильным доступом к битам, одно- и многобайтным SFR регистрам. Но это так далеко "от стандартного СИ"! Зато эффективно. Создал что-то подобное для нескольких своих внутренних переменных. Хотел иметь словные переменные типа unsigned int с возможностью доступа к отдельным байтам и битам. В полном соответствии с требованиями языка СИ, декларировал объединение, а в нем структуры. Поскольку декларация объединения общая для нескольких переменных, она должна быть именованной. Также структуры должны быть именованными, иначе транслятор Вас не понимает. Но теперь в описание моих переменных через точку добавляется имя структуры. Удалить "лишнее имя" удается только путем декларации макроса, аналогичного макросу для SFR. Если глянуть на любой из файлов с описанием фирменного драйвера (модуля нижнего уровня) обеспечивающего управление, например, SFR регистрами АЦП, большая часть функций этого уровня описана в виде макросов. Каждая из таких функций после трансляции превращается в одну или несколько строчек ассемблерного кода. Поэтому макросы тут - любимый прием. И то, что Вы рассмотрели в приведенной выше статье - это только верхушка айсберга под названием #define, на который опирается вся система программировани я для встраиваемых систем.]]></description>
			<dc:creator>wukrlvy</dc:creator>
			<pubDate>Wed, 29 Feb 2012 18:21:34 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-2034</guid>
		</item>
		<item>
			<title>YS says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-1797</link>
			<description><![CDATA[Прикольный трюк. :D Но на мой взгляд это такой эмбед-цирк. :) Я за inline-функции.]]></description>
			<dc:creator>YS</dc:creator>
			<pubDate>Mon, 24 Oct 2011 20:47:45 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-1797</guid>
		</item>
		<item>
			<title>Zebra says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-1169</link>
			<description><![CDATA[Не согласен. В 80% случаев с ними надобно бороться.]]></description>
			<dc:creator>Zebra</dc:creator>
			<pubDate>Fri, 18 Feb 2011 16:02:31 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-1169</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-833</link>
			<description><![CDATA[Ну не знаю, макросы неизбежное зло при программировани и мк.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Tue, 30 Nov 2010 17:22:42 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-833</guid>
		</item>
		<item>
			<title>Neiver says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-831</link>
			<description><![CDATA[А ещё лучше не извращаться с макросами и использовать встроенные функции (inline). Благо в стандарте C99 они есть и почти все компиляторы его поддерживают.]]></description>
			<dc:creator>Neiver</dc:creator>
			<pubDate>Tue, 30 Nov 2010 15:36:33 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-831</guid>
		</item>
		<item>
			<title>Guest says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-669</link>
			<description><![CDATA[Ух! спасибо, буду знать!]]></description>
			<dc:creator>Guest</dc:creator>
			<pubDate>Thu, 30 Sep 2010 13:37:12 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-669</guid>
		</item>
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-202</link>
			<description><![CDATA[Без точки с запятой как-то глаза режет.]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Mon, 15 Feb 2010 19:37:08 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-202</guid>
		</item>
		<item>
			<title>Guest says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-196</link>
			<description><![CDATA[Парные скобки и не ставить в конце ; и все. Заодно и макрос от функции будет легко отличить.]]></description>
			<dc:creator>Guest</dc:creator>
			<pubDate>Sun, 14 Feb 2010 00:19:48 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-196</guid>
		</item>
		<item>
			<title>Guest says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-172</link>
			<description><![CDATA[лучше всегда использовать do{}while(0) - скобки вы банально можете забыть в одном из if - и будете доолго разбираться, почему код работает неправильно. Доолго - потому что этот участок внутри if будет выглядеть совершенно правильно, очевидно. А если часть программы писал другой человек - вообще вилы.]]></description>
			<dc:creator>Guest</dc:creator>
			<pubDate>Fri, 05 Feb 2010 12:48:40 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-172</guid>
		</item>
		<item>
			<title>alexandershahbazov says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-65</link>
			<description><![CDATA[Я использую парные скобки .]]></description>
			<dc:creator>alexandershahbazov</dc:creator>
			<pubDate>Tue, 08 Dec 2009 23:09:36 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/21-tryuk-s-#define.html#comment-65</guid>
		</item>
	</channel>
</rss>
