Hola, compilen este programa haber si les funciona, es que a mi me aparece este error:
 
10 E:\Documents and Settings\Administrador\Escritorio\main.c syntax error before '*' token  
y este es el programa:    
Código C:
Ver original#ifndef _PIXELS_H_
#define _PIXELS_H_
 
 
enum colores {R, G, B};
 
// Esta función sustituye el color del píxel (x, y) de la superficie
// surface por el color que recibe en el parámtro pixel
 
void PutPixel(SDL_Surface *superficie, int x, int y, Uint32 pixel);
 
 
// Esta función devuelve el color del píxel de la
// posición (x, y) de la superficie
 
Uint32 GetPixel(SDL_Surface *superficie, int x, int y);
 
#endif
 
#include <SDL/SDL.h>
#include "pixels.h"
 
 
void PutPixel(SDL_Surface *superficie, int x, int y, Uint32 pixel) {
 
 // Obtenemos la profundida de color
 
 int bpp = superficie->format->BytesPerPixel;
 
 
 // Obtenemos la posición del píxel a sustituir
 
 Uint8 *p = (Uint8 *)superficie->pixels + y * superficie->pitch + x*bpp;
 
 
 // Según sea la profundidad de color
 
 switch (bpp) {
 
 case 1: // 8 bits (256 colores)
 
 *p = pixel;
break;
 
 case 2: // 16 bits (65536 colores o HigColor)
 *(Uint16 *)p = pixel;
 break;
 
 case 3: // 24 bits (True Color)
 
 // Depende de la naturaleza del sistema
 // Puede ser Big Endian o Little Endian
 
 if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
 
 // Calculamos cada una de las componentes de color
 // 3 bytes, 3 posiciones
 
 p[R]=(pixel >> 16) & 0xFF;
 p[G]=(pixel >> 8) & 0xFF;
 p[B]=pixel & 0xFF;
 }
 else {
 
 // Calculamos cada una de las componentes de color
 // 3 byes, 3 posiciones
 
 p[R]=pixel & 0xFF;
 p[G]=(pixel >> 8) & 0xFF;
 p[B]=(pixel >> 16) & 0xFF;
 
 }
 break;
 
 case 4: // 32 bits (True Color + Alpha)
 
 *(Uint32 *) p = pixel;
 break;
 }
}
 
 
 
 
Uint32 GetPixel(SDL_Surface *superficie, int x, int y) {
 
 // Obtenemos la profunidad de color
 
 int bpp = superficie->format->BytesPerPixel;
 
 
 // Obtenemos la posición del píxel a consultar
 
 Uint8 *p = (Uint8 *)superficie->pixels + \
 y * superficie->pitch + x * bpp;
// Según sea la profundidad de color
 
 switch (bpp) {
 
 case 1: // 256 colores
 
 return *p;
 case 2: // 65536 colores
 
 return *(Uint16 *)p;
 
case 3: // True Color
 
 // Según la naturaleza del sistema
 
 if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
 
 // OR entre los distintos componentes del color
 
 return p[R] << 16 | p[G] << 8 | p[B];
 
 else
 
 // OR entre los distintos componentes del color
 
 return p[R] | p[G] << 8 | p[B] << 16;
 
 case 4: // True Color + Alpha
 
 return *(Uint32 *)p;
 
 default:
 
 return 0;
 }
}