<?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/"
	>

<channel>
	<title>Persistent notes &#187; c</title>
	<atom:link href="http://alexkr.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexkr.com</link>
	<description>Alexander Krivutsenko&#039;s online journal</description>
	<lastBuildDate>Fri, 01 Oct 2010 08:16:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to print a call stack</title>
		<link>http://alexkr.com/memos/370/printing-backtrace/</link>
		<comments>http://alexkr.com/memos/370/printing-backtrace/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 21:47:42 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[big]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[gdb]]></category>

		<guid isPermaLink="false">http://alexkr.com/?p=370</guid>
		<description><![CDATA[While debugging a complex project have you ever experienced such a situation when the function is being called twice although it is only capable for getting called once by design?

For example, releasing some system resources, or smart pointer destruction.

In such cases it is easier to understand the problem when we can trace
the call stack of [...]]]></description>
		<wfw:commentRss>http://alexkr.com/memos/370/printing-backtrace/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Portable 64 bit integer type</title>
		<link>http://alexkr.com/memos/358/portable-64-bit-integer-type/</link>
		<comments>http://alexkr.com/memos/358/portable-64-bit-integer-type/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 21:43:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[big]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[portability]]></category>

		<guid isPermaLink="false">http://alexkr.com/?p=358</guid>
		<description><![CDATA[Here I would like to write about coding a &#8220;portable&#8221; C programs in a sense that they produce same results when compiled and executed on 32 and 64 bits architectures.

The problem I faced with DES is that I need to make sure that my integers are exactly 32 bits on all platforms where I compile [...]]]></description>
		<wfw:commentRss>http://alexkr.com/memos/358/portable-64-bit-integer-type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tricky question for C</title>
		<link>http://alexkr.com/posts/154/tricky-questions-for-c/</link>
		<comments>http://alexkr.com/posts/154/tricky-questions-for-c/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 14:58:10 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[short]]></category>
		<category><![CDATA[blah-blah]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://alexkr.com/posts/154/possible-interview-question-for-c/</guid>
		<description><![CDATA[This would be good as an interview question on C for those guys working with computations.

You have some code:


if (tmp != tmp)
{
 printf("it happened!");
}

You are running this application with tmp to be any of built-in types with no overloaded members (plain C).

Is there possibility that you would get  &#8220;it happened!&#8221; printed out
and what should [...]]]></description>
		<wfw:commentRss>http://alexkr.com/posts/154/tricky-questions-for-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some fun with C</title>
		<link>http://alexkr.com/fun/152/some-fun-with-c/</link>
		<comments>http://alexkr.com/fun/152/some-fun-with-c/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 13:37:54 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[short]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://alexkr.com/fun/152/some-fun-with-c/</guid>
		<description><![CDATA[Do you know that the following is legal C code?

const char * x = "abcdefgh";
int pos = 4;
char tmp1 = (5*2-6)[x];
char tmp2 = pos[x];
assert(tmp1 == 'e');
assert(tmp2 == 'e');

The point here is that compiler evaluates x[y] as (char&#038;)(x + y) or (char&#038;)(y + x).
So regardless of what comes first, the result is the same.
]]></description>
		<wfw:commentRss>http://alexkr.com/fun/152/some-fun-with-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy function pointers in C</title>
		<link>http://alexkr.com/posts/149/easy-function-pointers-in-c/</link>
		<comments>http://alexkr.com/posts/149/easy-function-pointers-in-c/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:26:20 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[short]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://alexkr.com/posts/149/easy-function-pointers-in-c/</guid>
		<description><![CDATA[The common syntax for declaring function pointer in C is not intuitive. This post shows an easier way.]]></description>
		<wfw:commentRss>http://alexkr.com/posts/149/easy-function-pointers-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cmake, nmake, qmake and etc.</title>
		<link>http://alexkr.com/posts/147/cmake-nmake-qmake-and-etc/</link>
		<comments>http://alexkr.com/posts/147/cmake-nmake-qmake-and-etc/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:29:32 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[short]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cpp]]></category>

		<guid isPermaLink="false">http://alexkr.com/posts/147/cmake-nmake-qmake-and-etc/</guid>
		<description><![CDATA[As I recently faced an issue when trying to build a &#8220;portable&#8221; library which is using QT and also supports Windows platform. Finally I was
able to run it on Windows (partially).
There are several most commonly used tools:
cmake: &#8220;build system&#8221; &#8211; attempt to have cross platform &#8220;make&#8221; functionality.
Theoretically all IDEs in the future should support loading, [...]]]></description>
		<wfw:commentRss>http://alexkr.com/posts/147/cmake-nmake-qmake-and-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cache efficient matrix multiplication</title>
		<link>http://alexkr.com/source-code/140/cache-efficient-matrix-multiplication/</link>
		<comments>http://alexkr.com/source-code/140/cache-efficient-matrix-multiplication/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 15:24:35 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[big]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://alexkr.com/source-code/140/cache-efficient-matrix-multiplication/</guid>
		<description><![CDATA[Regardless of cache coherency problem in multithreaded environment one must think about cache efficiency when operating on various memory locations.

It is amazing how good cache efficient code performs.
As a classical example there is matrix multiplication problem.
When values are stored in memory in row major form you have good sequential access to the elements inside one [...]]]></description>
		<wfw:commentRss>http://alexkr.com/source-code/140/cache-efficient-matrix-multiplication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Function inside a function</title>
		<link>http://alexkr.com/posts/137/function-inside-a-function/</link>
		<comments>http://alexkr.com/posts/137/function-inside-a-function/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 13:58:41 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[short]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://alexkr.com/posts/137/function-inside-a-function/</guid>
		<description><![CDATA[Normally you cannot declare a function inside another one.
But you can declare a class inside a function.
And this class can have both static and member functions.


#include &#60;iostream&#62;
void some_func()
{
 struct func{
  static int doit(int value) {
   return value+1;
  }
 };
 std::cout &#60;&#60; func::doit(2) &#60;&#60; std::endl;
}
int main()
{
 some_func();
 return 0;
}


However, there are still [...]]]></description>
		<wfw:commentRss>http://alexkr.com/posts/137/function-inside-a-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

