<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: C, C++: Cuidado com funções definidas como macros</title>
	<atom:link href="http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Wed, 16 May 2012 12:39:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Coster</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-493</link>
		<dc:creator>Coster</dc:creator>
		<pubDate>Wed, 27 May 2009 01:17:44 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-493</guid>
		<description>É bom lembrar que inline é apenas um hint pro compilador, e que sua presença não garante que a função será &quot;inlinezinada&quot;.</description>
		<content:encoded><![CDATA[<p>É bom lembrar que inline é apenas um hint pro compilador, e que sua presença não garante que a função será &#8220;inlinezinada&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Murilo Adriano</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-492</link>
		<dc:creator>Murilo Adriano</dc:creator>
		<pubDate>Mon, 25 May 2009 01:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-492</guid>
		<description>Esse negócio de funções por macro nunca deram muito certo.
O que rola é usar inline mesmo.</description>
		<content:encoded><![CDATA[<p>Esse negócio de funções por macro nunca deram muito certo.<br />
O que rola é usar inline mesmo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: _Felipe</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-491</link>
		<dc:creator>_Felipe</dc:creator>
		<pubDate>Wed, 29 Apr 2009 01:29:02 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-491</guid>
		<description>Pois é ;-)</description>
		<content:encoded><![CDATA[<p>Pois é ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gustavo Sverzut Barbieri</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-490</link>
		<dc:creator>Gustavo Sverzut Barbieri</dc:creator>
		<pubDate>Tue, 28 Apr 2009 22:55:35 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-490</guid>
		<description>http://ozlabs.org/~rusty/index.cgi/tech/2009-03-13.html faltou o link pro post do Rusty.</description>
		<content:encoded><![CDATA[<p><a href="http://ozlabs.org/~rusty/index.cgi/tech/2009-03-13.html" rel="nofollow">http://ozlabs.org/~rusty/index.cgi/tech/2009-03-13.html</a> faltou o link pro post do Rusty.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gustavo Sverzut Barbieri</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-489</link>
		<dc:creator>Gustavo Sverzut Barbieri</dc:creator>
		<pubDate>Tue, 28 Apr 2009 22:54:38 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-489</guid>
		<description>Como foi bem escrito pelo kernel hacker &quot;Rusty&quot; Russel em seu post &quot;Valid Uses of Macros&quot;, elas tem alguma função, mas em geral é bem menor do que a maioria dos usuários costuma pensar.

Uma função como a do exemplo deveria ser &quot;static inline&quot;. Isto evitaria todos os problemas citados anteriormente, como avaliação parcial e reavaliação dos argumentos.</description>
		<content:encoded><![CDATA[<p>Como foi bem escrito pelo kernel hacker &#8220;Rusty&#8221; Russel em seu post &#8220;Valid Uses of Macros&#8221;, elas tem alguma função, mas em geral é bem menor do que a maioria dos usuários costuma pensar.</p>
<p>Uma função como a do exemplo deveria ser &#8220;static inline&#8221;. Isto evitaria todos os problemas citados anteriormente, como avaliação parcial e reavaliação dos argumentos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thiago Marcos P. Santos</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-488</link>
		<dc:creator>Thiago Marcos P. Santos</dc:creator>
		<pubDate>Tue, 28 Apr 2009 14:45:47 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-488</guid>
		<description>Não resolveria completamente o problema, caso a função fosse chamada como: quadrado(n--). Neste caso, n seria decrementado duas vezes.</description>
		<content:encoded><![CDATA[<p>Não resolveria completamente o problema, caso a função fosse chamada como: quadrado(n&#8211;). Neste caso, n seria decrementado duas vezes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: eljunior</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-487</link>
		<dc:creator>eljunior</dc:creator>
		<pubDate>Tue, 28 Apr 2009 14:03:37 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-487</guid>
		<description>por isso que o adequado é botar os códigos das macros entre parênteses:

#define quadrado(n) ((n) * (n))</description>
		<content:encoded><![CDATA[<p>por isso que o adequado é botar os códigos das macros entre parênteses:</p>
<p>#define quadrado(n) ((n) * (n))</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiago Peczenyj</title>
		<link>http://codare.net/2009/04/28/c-cpp-cuidado-com-funcoes-definidas-como-macros/#comment-486</link>
		<dc:creator>Tiago Peczenyj</dc:creator>
		<pubDate>Tue, 28 Apr 2009 13:37:00 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/?p=302#comment-486</guid>
		<description>Isso se deve ao fato das macros em C serem &quot;meras&quot; substituições textuais.

Agora, alguns compiladores, como o gcc, otimizam as funções de forma a usar inline sempre que possivel. Vc pode observar compilando 2 arquivos com as mesmas funções e um deles usando inline explicito - geram codigo executavel igual (mesmo tamanho, md5, etc). Agora o g++ gera codigo diferente sim.</description>
		<content:encoded><![CDATA[<p>Isso se deve ao fato das macros em C serem &#8220;meras&#8221; substituições textuais.</p>
<p>Agora, alguns compiladores, como o gcc, otimizam as funções de forma a usar inline sempre que possivel. Vc pode observar compilando 2 arquivos com as mesmas funções e um deles usando inline explicito &#8211; geram codigo executavel igual (mesmo tamanho, md5, etc). Agora o g++ gera codigo diferente sim.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

