<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CODARE &#187; Alfredo Kojima</title>
	<atom:link href="http://codare.net/author/ak76/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Tue, 29 Sep 2009 12:00:01 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='codare.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d9589f1266f7b80a398397e3165f7c56?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>CODARE &#187; Alfredo Kojima</title>
		<link>http://codare.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://codare.net/osd.xml" title="CODARE" />
	<atom:link rel='hub' href='http://codare.net/?pushpress=hub'/>
		<item>
		<title>Visual Studio: Updating Intellisense</title>
		<link>http://codare.net/2009/04/30/visual-studio-updating-intellisense/</link>
		<comments>http://codare.net/2009/04/30/visual-studio-updating-intellisense/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 12:00:19 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[feacp.dll]]></category>
		<category><![CDATA[intellisense]]></category>
		<category><![CDATA[msvc]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://codare.net/?p=329</guid>
		<description><![CDATA[Se sua pressão aumenta toda vez que vê essa mensage no Visual Studio, é possível desabilitar totalmente essa funcionalidade:
Vá em: C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages ou equivalente na sua máquina e apague (ou renomeie para algo inócuo) o arquivo feacp.dll.
Isto desabilita o Intellisense para C++, mas não para C# (onde ele funciona melhor). Infelizmente isto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=329&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Se sua pressão aumenta toda vez que vê essa mensage no Visual Studio, é possível desabilitar totalmente essa funcionalidade:</p>
<p>Vá em: <b>C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages</b> ou equivalente na sua máquina e apague (ou renomeie para algo inócuo) o arquivo <strong>feacp.dll</strong>.</p>
<p>Isto desabilita o Intellisense para C++, mas não para C# (onde ele funciona melhor). Infelizmente isto também desabilita funcionalidades como o auto-complete ou a navegação &#8220;inteligente&#8221; entre arquivos.</p>
<p>É, pode ser um preço pequeno a pagar pela manutenção de sua sanidade.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/329/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/329/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/329/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=329&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2009/04/30/visual-studio-updating-intellisense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C++: hash_set, hash_map</title>
		<link>http://codare.net/2008/06/12/cpp-hash_set-hash_map/</link>
		<comments>http://codare.net/2008/06/12/cpp-hash_set-hash_map/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 03:00:58 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[CPP]]></category>
		<category><![CDATA[g++]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hash_map]]></category>
		<category><![CDATA[hash_set]]></category>
		<category><![CDATA[std::string]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/?p=192</guid>
		<description><![CDATA[Apesar dos templates para hash_set e hash_map não serem padronizados, ambos são relativamente comuns, estando disponíveis tanto na implementação GNU (ie, no GCC) quanto no Visual C++ no Windows. Existem algumas diferenças, como o namespace um pouco mais escondido no GNUC (__gnu_cxx vs stdext) e alguns métodos que existem em um mas não em outro [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=192&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Apesar dos templates para <code>hash_set</code> e <code>hash_map</code> não serem padronizados, ambos são relativamente comuns, estando disponíveis tanto na implementação GNU (ie, no GCC) quanto no Visual C++ no Windows. Existem algumas diferenças, como o <i>namespace</i> um pouco mais escondido no GNUC (<code>__gnu_cxx</code> <i>vs</i> <code>stdext</code>) e alguns métodos que existem em um mas não em outro (p.ex.: <code>reverse_iterator</code> que não existe no GCC); mas a maioria das vezes servem para o serviço.</p>
<p>Um problema comum com essas classes no GCC é um erro meio criptico quando tentamos usar <code>__gnu_cxx::hash_set&lt;std::string&gt;</code> ou <code>__gnu_cxx::hash_map&lt;std::string&gt;</code>:<br />
<code><br />
/usr/include/c++/4.2/ext/hashtable.h:595: error: no match for call to '(const __gnu_cxx::hash&lt;std::basic_string&lt;char, std::char_traits, std::allocator &gt; &gt;) (const std::basic_string&lt;char, std::char_traits, std::allocator &gt;&amp;)'<br />
</code></p>
<p>Este erro ocorre porque a libstdc++ não define uma função de hash para <code>std::string</code>. A solução é definir uma (O RLY?). Felizmente a biblioteca padrão define uma função de hash para strings do tipo <code>char*</code>, então podemos aproveitá-la:</p>
<pre>
struct string_hash : public std::unary_function&lt;std::string,size_t&gt;
{
&nbsp;&nbsp;size_t operator() (const std::string &amp;v) const
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;return __gnu_cxx::hash()(v.c_str());
&nbsp;&nbsp;}
};
typedef __gnu_cxx::hash_set&lt;std::string,string_hash&gt; string_hash_set;
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/192/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/192/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=192&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2008/06/12/cpp-hash_set-hash_map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C++: Ponteiro para métodos/funções sobrecarregadas</title>
		<link>http://codare.net/2008/05/20/cpp-ponteiro-para-metodos-funcoes-sobrecarregadas/</link>
		<comments>http://codare.net/2008/05/20/cpp-ponteiro-para-metodos-funcoes-sobrecarregadas/#comments</comments>
		<pubDate>Tue, 20 May 2008 14:12:06 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[CPP]]></category>
		<category><![CDATA[ambíguo]]></category>
		<category><![CDATA[function overloading]]></category>
		<category><![CDATA[method pointer]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/?p=189</guid>
		<description><![CDATA[Para obter ponteiros a métodos ou funções sobrecarregadas, como exemplo:

class Foo
{
public:
void bla(int a);
int bla() const;
};

Se tentarmos usar o nome da função diretamente, o compilador não saberá a qual dos métodos você se refere. Para sair da ambiguidade, necessitamos usar a &#8220;assinatura&#8221; (os tipos dos parâmetros e  do valor retornado) da função indiretamente, possivelmente com [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=189&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Para obter ponteiros a métodos ou funções sobrecarregadas, como exemplo:</p>
<pre>
class Foo
{
public:
void bla(int a);
int bla() const;
};
</pre>
<p>Se tentarmos usar o nome da função diretamente, o compilador não saberá a qual dos métodos você se refere. Para sair da ambiguidade, necessitamos usar a &#8220;assinatura&#8221; (os tipos dos parâmetros e  do valor retornado) da função indiretamente, possivelmente com o uso de variáveis temporárias:</p>
<pre>
void (Foo::*ptr1)(int)= &amp;Foo::bla;
int (Foo::*ptr2)() const= &amp;Foo::bla;
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/189/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/189/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=189&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2008/05/20/cpp-ponteiro-para-metodos-funcoes-sobrecarregadas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C, C++: Funções com número variável de parâmetros (stdargs)</title>
		<link>http://codare.net/2007/05/23/c-cpp-funcoes-com-numero-variavel-de-parametros-stdargs/</link>
		<comments>http://codare.net/2007/05/23/c-cpp-funcoes-com-numero-variavel-de-parametros-stdargs/#comments</comments>
		<pubDate>Wed, 23 May 2007 12:30:03 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[CPP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/05/23/c-cpp-funcoes-com-numero-variavel-de-parametros-stdargs/</guid>
		<description><![CDATA[Palavras-chave: C, C++, varargs, argumentos variáveis
Para escrever funções que aceitam quantidade variável de parâmetros, usa-se o mecanismo de stdargs do C. Para isso coloca-se &#8220;&#8230;&#8221; como último parâmetro na declaração da função e depois usa-se as funções de stdarg.h para acessar os valores passados quando a funcão é chamada. 


É obrigatório a inclusão de pelo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=154&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C, C++, varargs, argumentos variáveis</p>
<p>Para escrever funções que aceitam quantidade variável de parâmetros, usa-se o mecanismo de stdargs do C. Para isso coloca-se &#8220;&#8230;&#8221; como último parâmetro na declaração da função e depois usa-se as funções de <i>stdarg.h</i> para acessar os valores passados quando a funcão é chamada. </p>
<ul>
<li>
<p>É obrigatório a inclusão de pelo menos um parâmetro normal antes da parte variável. (ex.: <code>char *concat(<b>const char *s</b>, ...)</code>) </li>
<li>
<p>Qualquer tipo de valor pode ser passado como parâmetro, mas é impossível determinar em runtime o tipo dos valores que uma função recebeu. Porém é possível criar formas de o código que chama a funcão comunicar os tipos dos valores passados. Por exemplo, a função printf() determina os tipos dos parâmetros recebidos pela <i>string</i> de formatação (%s para char*, %i para int etc); a função <code>concat()</code> no exemplo espera que todos os parâmetros recebidos sejam strings e assim por diante.
</li>
<li>
<p>O número de parâmetros recebido também não pode ser determinado explicitamente. É necessário usar artifícios adicionais como passar uma variável extra com o número de valores sendo passados, usar o valor NULL como indicador de último  parâmetro ou derivar a quantidade de valores a partir da string de formatação, como no caso do printf() e similares.
</li>
</ul>
<p>Exemplo:</p>
<pre>
#include &lt;stdarg.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

char *concat(const char *s, ...)
{
  va_list args;
  char *tmp;
  char *res;
  size_t len= strlen(s);

  // pega um handle ao início da lista de parâmetros
  va_start(args, s);

  // calcula o tamanho total de todas as strings
  // pega o próximo parâmetro da lista, até chegar no NULL
  while ((tmp= va_arg(args, char*)))  {
     len+= strlen(tmp);
  }

  va_end(args);
  res= malloc(len+1);
  if (!res) return NULL;

  // cria a string concatenada
  strcpy(res, s);
  va_start(args, s);

  // pega o próximo parâmetro da lista, até chegar no NULL
  while ((tmp= va_arg(args, char*)))  {
     strcat(res, tmp);
  }
  va_end(args);

  return res;
}

int main()
{
  char *s= concat("hello", " ", "world", "!!!!", NULL);
  puts(s);
  free(s);
  return 0;
}
</pre>
<p>Se você quer usar <b>macros</b> com número de parâmetros variável (por exemplo, uma macro que chama uma função com stdargs), veja <a href="/2007/01/03/c-varargs-com-macros-no-gcc/">o post sobre o assunto</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/154/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/154/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=154&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/05/23/c-cpp-funcoes-com-numero-variavel-de-parametros-stdargs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C++: Pré-compilação de headers no gcc</title>
		<link>http://codare.net/2007/05/11/cpp-pre-compilacao-de-headers-no-gcc/</link>
		<comments>http://codare.net/2007/05/11/cpp-pre-compilacao-de-headers-no-gcc/#comments</comments>
		<pubDate>Fri, 11 May 2007 12:30:22 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[CPP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/05/11/cpp-pre-compilacao-de-headers-no-gcc/</guid>
		<description><![CDATA[Palavras-chave: C++, C, C#, precompiled header, prefix header, g++, lento
Se seu programa em C++ demora séculos para compilar, considere usar um recurso do GCC 4 que acelera compilações de maneira bastante simples. 
Um dos motivo porque programas C++ demoram tanto para compilar é a grande quantidade de headers a se incluir. Um programa com #include [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=153&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C++, C, C#, precompiled header, prefix header, g++, lento</p>
<p>Se seu programa em C++ demora séculos para compilar, considere usar um recurso do GCC 4 que acelera compilações de maneira bastante simples. </p>
<p>Um dos motivo porque programas C++ demoram tanto para compilar é a grande quantidade de <i>headers</i> a se incluir. Um programa com <code>#include &lt;gtkmm.h&gt;</code>, por exemplo, vai incluir literalmente milhares de arquivos, dentre eles os do gtkmm em si, glibmm, pangomm, atkmm, sigc++, gtk+, pango, atk, gdk, glib etc etc etc. Além disso, pela complexidade de linguagem, o processamento de headers C++ é demorado.</p>
<p>Como isso tudo é feito para cada arquivo fonte do programa, no final das contas é bem possível que boa parte do tempo de compilação seja gasto processando esse mesmo grupo de headers tantas vezes quanto o número de arquivos no seu projeto.</p>
<p>No GCC 4 foi incluído o recurso de pré-compilação de headers. Ou seja, você pode pré-compilar os headers em separado para que este passo não precise ser repetido para cada arquivo. Para pré-compilar um cabeçalho, simplesmente rode o gcc nele como se fosse compilar um arquivo fonte comum:</p>
<pre>
% g++ meuheader.h -I/path/para/diretorios/de/includes 

(se tudo der certo, um arquivo meuheader.h.gch será gerado)
</pre>
<p>Se o gcc encontrar a versão pré-compilada de um header enquanto procura por ele, esta será usada. Uma forma simples de se usar esse recurso no seu projeto é pré-compilar um &#8220;prefix header&#8221; que será automaticamente incluído no começo de todos os arquivos fonte de seu programa. Este arquivo deve conter #includes para todos os headers que seu programa precisa.</p>
<p>Segue uma receita de bolo para usar prefix headers pré-compilados:</p>
<ol>
<li>Crie um arquivo (por exemplo, prefix_header.h) que inclua todos os headers de bibliotecas que seu programa usa, ex.:
<pre>
#include &lt;list&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;gtkmm.h&gt;
#include &lt;cairo.h&gt;
#include &lt;math.h&gt;
</pre>
</li>
<li>Compile prefix_header.h
<pre>
% g++ prefix_header.h $(pkg-config gtkmm-2.4 cairo --cflags)
</pre>
</li>
<li>Compile seu programa usando o prefix header
<pre>
% make "CXXFLAGS=-include prefix_header.h"
</pre>
</li>
</ol>
<p>Isso também funciona em C e Objective-C, mas a maior diferença pode ser notada no C++.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/153/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/153/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/153/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/153/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=153&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/05/11/cpp-pre-compilacao-de-headers-no-gcc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C: Ler linhas de um arquivo texto de maneira portável</title>
		<link>http://codare.net/2007/02/28/c-ler-linhas-de-um-arquivo-texto-de-maneira-portavel/</link>
		<comments>http://codare.net/2007/02/28/c-ler-linhas-de-um-arquivo-texto-de-maneira-portavel/#comments</comments>
		<pubDate>Thu, 01 Mar 2007 01:59:38 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://codare.net/2007/02/28/ler-linhas-de-um-arquivo-texto-de-maneira-portavel/</guid>
		<description><![CDATA[Palavras-chave: C, arquivo texto, linhas, leitura, getline
Como dito num post anterior, a glibc possui uma função para ler linhas de comprimento arbitrário de um arquivo texto. Mas como esta função é especifica a glibc, alguns leitores pediram uma versão que faça o mesmo em qualquer sistema. Uma das muitas formas de fazer isto é:

#include &#60;stdio.h&#62;
#include [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=139&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C, arquivo texto, linhas, leitura, getline</p>
<p>Como dito num <a href="/2006/09/20/c-ler-linhas-de-um-arquivo-texto/">post anterior</a>, a glibc possui uma função para ler linhas de comprimento arbitrário de um arquivo texto. Mas como esta função é especifica a glibc, alguns leitores pediram uma versão que faça o mesmo em qualquer sistema. Uma das muitas formas de fazer isto é:</p>
<pre>
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

char *pegalinha(FILE *f, char **buffer, size_t *buflen)
{
  char *ptr;
  char *tmp;
  int c;
  if (!*buffer || !*buflen)
  {
    *buflen= 32;
    *buffer= (char*)malloc(*buflen);
    if (!*buffer)
      return NULL;
  }

  ptr= *buffer;
  while ((c= fgetc(f)) != EOF) {
    *ptr++= c;
    if (c == '\\n') break;

    if (ptr - *buffer &gt;= *buflen-1)
    {
      // aumenta o buffer um pouco mais
      tmp= (char*)realloc(*buffer, *buflen+32);
      if (!tmp)
        return NULL;
      // atualiza ptr para o caso do novo buffer estar em outro lugar
      ptr= tmp + (ptr - *buffer);
      *buflen+= 32;
      *buffer= tmp;
    }
  }
  *ptr= 0;
  return c==EOF ? NULL : *buffer;
}

int main(int argc, char **argv)
{
   FILE *file;
   char *linha= NULL;
   size_t tamlinha= 0;

   if (argc != 2) { printf("%s \\n", argv[0]); exit(1); }

   if (!(file= fopen(argv[1], "r"))) { perror(argv[1]); exit(1); }

   while (pegalinha(file, &amp;linha, &amp;tamlinha))
   {
     printf("%i:%s", tamlinha, linha);
   }
   if (linha)
     free(linha);
   fclose(file);
   return 0;
}
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/139/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/139/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=139&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/02/28/c-ler-linhas-de-um-arquivo-texto-de-maneira-portavel/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>Python: split() de palavras com &#8220;strings protegidas&#8221;</title>
		<link>http://codare.net/2007/02/19/python-split-de-palavras-com-strings-protegidas/</link>
		<comments>http://codare.net/2007/02/19/python-split-de-palavras-com-strings-protegidas/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 11:35:45 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://codare.net/2007/02/19/split-de-palavras-com-strings-protegidas/</guid>
		<description><![CDATA[Palavras-chave: Python, split, tokenizacão, análise léxica, parser, strings, quotes, aspas
O módulo re possui a conveniente função split(), que faz o mesmo que o split() dos strings, mas aceita expressões regulares como separador. Isto pode ser aproveitado para fazer um &#8220;parser de pobre&#8221; para casos simples, como por exemplo, quebrar um texto em palavras, levando em [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=46&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: Python, split, tokenizacão, análise léxica, parser, strings, quotes, aspas</p>
<p>O módulo <code>re</code> possui a conveniente função <code>split()</code>, que faz o mesmo que o <code>split()</code> dos strings, mas aceita expressões regulares como separador. Isto pode ser aproveitado para fazer um &#8220;<i>parser</i> de pobre&#8221; para casos simples, como por exemplo, quebrar um texto em palavras, levando em conta &#8220;strings&#8221; entre aspas:</p>
<pre>
 &gt;&gt;&gt; texto="lorem ipsum dolor 'hello world' 'mais texto'' assim'"
 &gt;&gt;&gt; print filter(None,re.split("('(?:[^']|'')*')| ", texto))
['lorem', 'ipsum', 'dolor', "'hello world'", "'mais texto'' assim'"]
</pre>
<p>O <code>filter()</code> é necessário para remover espaços em branco e <code>Nones</code> que sobram no resultado. Como bônus, strings podem conter <code>'</code> escapados com <code>''</code>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=46&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/02/19/python-split-de-palavras-com-strings-protegidas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>Python: UTF8 e SQLObject</title>
		<link>http://codare.net/2007/01/24/python-utf8-e-sqlobject/</link>
		<comments>http://codare.net/2007/01/24/python-utf8-e-sqlobject/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 11:55:44 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://codare.net/2007/01/24/utf8-e-sqlobject/</guid>
		<description><![CDATA[Palavras-chave: Unicode, utf8, SQLObject, TurboGears, erro
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 50: ordinal not in range(128)
Este erro pode ocorrer quando se tenta executar queries que envolvem caracteres Unicode (na query em si ou no resultado) usando SQLObject (o módulo de banco de dados usado no TurboGears).
A solução é forçar o SQLObject a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=60&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: Unicode, utf8, SQLObject, TurboGears, erro</p>
<p><code>UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 50: ordinal not in range(128)</code></p>
<p>Este erro pode ocorrer quando se tenta executar queries que envolvem caracteres Unicode (na query em si ou no resultado) usando SQLObject (o módulo de banco de dados usado no TurboGears).</p>
<p>A solução é forçar o SQLObject a usar UTF-8 internamente e desativar conversões desnecessárias sendo feitas por ele. Para isso modifique sua URI de conexão para algo como:</p>
<p><code><br />
sqlobject.dburi=<br />
  "mysql://root:@localhost:3306/fliki<b>?use_unicode=1&amp;sqlobject_encoding=utf8</b>"<br />
</code></p>
<p>Dependendo da versão do SQLObject pode ser necessário também adicionar o parâmetro <code>charset=utf8</code> à URI.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/60/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/60/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=60&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/01/24/python-utf8-e-sqlobject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C: Linkagem estática não encontra funções</title>
		<link>http://codare.net/2007/01/12/c-linkagem-estatica-nao-encontra-funcoes/</link>
		<comments>http://codare.net/2007/01/12/c-linkagem-estatica-nao-encontra-funcoes/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 11:39:16 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://codare.net/2007/01/12/linkagem-estatica-nao-encontra-funcoes/</guid>
		<description><![CDATA[Palavras-chave: C, linkagem estática, undefined reference, referência indefinida
Ao linkar programas que usam bibliotecas estáticas que por usa vez usam outras bibliotecas estáticas, pode ocorrer de o linker reclamar da falta de símbolos de uma das bibliotecas, apesar de eles estarem comprovadamente definidos em uma delas. Isso pode ocorrer por causa da ordem errada em que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=70&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C, linkagem estática, undefined reference, referência indefinida</p>
<p>Ao linkar programas que usam bibliotecas estáticas que por usa vez usam outras bibliotecas estáticas, pode ocorrer de o linker reclamar da falta de símbolos de uma das bibliotecas, apesar de eles estarem comprovadamente definidos em uma delas. Isso pode ocorrer por causa da ordem errada em que as bibliotecas foram passadas ao linker.</p>
<p>Apesar de o linker se virar para encontrar símbolos em bibliotecas dinâmicas, para as estáticas é necessário passá-las em ordem de dependência. Por exemplo, se seu programa usa a libpng.a que usa a libz.a internamente, o comando correto para linká-lo é:</p>
<pre>
gcc programa.c -oprograma /usr/lib/libpng.a /usr/lib/libz.a
</pre>
<p>Mas se a ordem estivesse invertida:</p>
<pre>
$ gcc programa.c -oprograma /usr/lib/libz.a /usr/lib/libpng.a
/usr/lib/libpng.a(png.o): In function `png_reset_crc': undefined reference to `crc32'
/usr/lib/libpng.a(png.o): In function `png_calculate_crc': undefined reference to `crc32'
/usr/lib/libpng.a(png.o): In function `png_calculate_crc': undefined reference to `crc32'
/usr/lib/libpng.a(png.o): In function `png_reset_zstream': undefined reference to `inflateReset'
collect2: ld returned 1 exit status
</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/70/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/70/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=70&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/01/12/c-linkagem-estatica-nao-encontra-funcoes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
		<item>
		<title>C: varargs com macros no gcc</title>
		<link>http://codare.net/2007/01/03/c-varargs-com-macros-no-gcc/</link>
		<comments>http://codare.net/2007/01/03/c-varargs-com-macros-no-gcc/#comments</comments>
		<pubDate>Wed, 03 Jan 2007 12:30:52 +0000</pubDate>
		<dc:creator>Alfredo Kojima</dc:creator>
				<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://codare.net/2007/01/03/varargs-com-macros-no-gcc/</guid>
		<description><![CDATA[Palavras-chave: C, gcc, cpp, macros, &#8230;, varargs, número de parâmetros variável, variadic macros
Para escrever macros de função com número variável de argumentos:

#define DPRINT(fmt, ...)   printf("DEBUG: "fmt"\\n", ## __VA_ARGS__)

__VA_ARGS__ será substituído pelos parâmetros dados. E o ## entre a vírgula e __VA_ARGS__ se encarregará de remover a vírgula quando o número de argumentos for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=19&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C, gcc, cpp, macros, &#8230;, varargs, número de parâmetros variável, variadic macros</p>
<p>Para escrever macros de função com número variável de argumentos:</p>
<pre>
#define DPRINT(fmt, ...)   printf("DEBUG: "fmt"\\n", <strong>## __VA_ARGS__</strong>)
</pre>
<p>__VA_ARGS__ será substituído pelos parâmetros dados. E o ## entre a vírgula e __VA_ARGS__ se encarregará de remover a vírgula quando o número de argumentos for 0.</p>
<p>Exemplo:</p>
<pre>
#include &lt;stdio.h&gt;
#define DPRINT(fmt, ...) printf("DEBUG: "fmt"\\n", ##__VA_ARGS__)

int main()
{
  int i= 0, j= 0;
  DPRINT("chegou aqui");
  DPRINT("valor de i = %i, j = %i", i, j);
  return 0;
}
</pre>
<p>Nota: O Visual C++, a partir da versão 2005, passou a incluir o mesmo recurso. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=19&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/01/03/c-varargs-com-macros-no-gcc/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d84606711342b99b23eb2c02f13ac5d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Alfredo Kojima</media:title>
		</media:content>
	</item>
	</channel>
</rss>