C

GCC 4.4.0 Released

GCC 4.4.0 was released on April 21st. Notable changes include fascinating new optimizations for loops. Particularly, they include the ability for the compiler to automatically rewrite loops to take into account memory layout of the system. I recall distinctly in my Intro to Data Structures CS class the teacher using the example of a two dimensional loop which iterated the "wrong way" (causing many disparate memory look ups and cache-misses) as a classic performance killer.

Getting the List of Default #define's From GCC

Most of the postings I make to this website are for my own personal reference. They are things that I want to make sure I don't forget, or at least have easy access to. Today is no exception. For some reason, I can never remember the following command and have to track it down every time I'm interested.

echo "" | cpp -dD

This prints out all of the #define's that GCC is providing for you. In some ways it's a fascinating little look inside the compiler.

On mingw-gcc 3.4.5 you get the following:

Do You Know What ++i And i++ Really Do?

An interviewer who thinks he is being clever might present you with a code sample like the following and ask you what the output would be:

//C
#include <stdio.h>
 
void dosomething(int i, int j, int k, int l)
{
  printf("%d, %d, %d, %d\n", i,j,k,l);
}
 
int main(int argc, char **argv)
{
  int i =1;
  dosomething(i++, ++i, i++, ++i);
 
  i = 1;
  printf("%d\n", i++ + ++i + i++ + ++i);
 
  i = 1;
  printf("%d\n", (i++) + (++i) + (i++) + (++i));
}

Syndicate content