#include <stdio.h>
#include <stdlib.h> // Per al 'exit'
#define GLUT_DISABLE_ATEXIT_HACK
//#include <GLUT/glut.h>
#include <GL/glut.h>
//#include <OpenAL/alut.h>
#include <AL/alut.h> 
// function prototypes ---------------------------------------------
int generar(); 
int main (int argc, char **argv)
{  
char c; 
do{ 
printf("Elija una de las siguientes opciones: \n\n");
printf("a.Generar señales simples.\n\n");
printf("b.Obtener version openAL y ALUT.\n\n");
printf("c.Mostrar dispositivos de audio.\n\n");
printf("d.Mostrar extensiones OPENAL.\n\n");
printf("e.Modificar PITCH de cada fuente.\n\n");
printf("f.Modificar GAIN de cada fuente y del oyente.\n\n");
printf("g.Cambiar la orientación del oyente.\n\n");
printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n");
printf("i. Modificar DOPPLER de cada fuente\n\n");
printf("j.Salir.\n\n"); 
c = getchar();  
switch ( c )
{
case 'a':
generar();   
llamada a la funcion generar
break;
case 'b':
printf("Has elegido la Opción b");
break;
case 'c':
printf("Has elegido la Opción c");
break;
case 'd':
printf("Has elegido la Opción d");
break;
case 'e':
printf("Has elegido la Opción e");
break;
case 'f':
printf("Has elegido la Opción f");
break;
case 'g':
printf("Has elegido la Opción g");
break;
case 'h':
printf("Has elegido la Opción h");
break;
case 'i':
printf("Has elegido la Opción i");break; 
}// switch 
}while ((c != 'j') && (c != 'J')); 
} 
 la funcion MAIN tiene que acabar aqui, puesto que el codigo de la funcion generar no puede estar dentro del main. dentro del main estara la llamada a la funcion:  generar()  
//return EXIT_SUCCESS; 
int generar(){
int argc;
char **argv;
ALuint buffers[6], fuente;
char p; 
alutInit (&argc, argv);
p = 'h'; 
buffers[0] = alutCreateBufferHelloWorld ();
buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0);
buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0);
buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0);
buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0); 
alGenSources (1, &fuente);
printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n"); 
do
{
switch ( p )
{
case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]);
break;
case 's': alSourcei (fuente, AL_BUFFER, buffers[1]);
break;
case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]);
break;
case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]);
break;
case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]);
break;
case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]);
break;
}// switch 
alSourcePlay (fuente);
alutSleep (1);
p = getch();
printf("%c\r", p); fflush(stdout);
} while ((p != 'q') && (p != 'Q')); 
printf("\nTerminando ... \n"); 
alDeleteSources(1, &fuente);
alDeleteBuffers(6, buffers); 
alutExit ();
return EXIT_SUCCESS;
}   
aqui acaba la funcion generar      
}    
esta sobra   
quedaria asi:    
Código C:
Ver original- #include <stdio.h> 
- #include <stdlib.h> // Per al 'exit' 
- #define GLUT_DISABLE_ATEXIT_HACK 
- //#include <GLUT/glut.h> 
- #include <GL/glut.h> 
- //#include <OpenAL/alut.h> 
- #include <AL/alut.h> 
-   
- // function prototypes --------------------------------------------- 
- int generar(); 
-   
- int main (int argc, char **argv) 
- { 
-     char c; 
-   
-     do{ 
-   
-     printf("Elija una de las siguientes opciones: \n\n"); 
-     printf("a.Generar señales simples.\n\n"); 
-     printf("b.Obtener version openAL y ALUT.\n\n"); 
-     printf("c.Mostrar dispositivos de audio.\n\n"); 
-     printf("d.Mostrar extensiones OPENAL.\n\n"); 
-     printf("e.Modificar PITCH de cada fuente.\n\n"); 
-     printf("f.Modificar GAIN de cada fuente y del oyente.\n\n"); 
-     printf("g.Cambiar la orientación del oyente.\n\n"); 
-     printf("h.Cambiar posicion espacial y orientacion de cada fuente\n\n"); 
-     printf("i. Modificar DOPPLER de cada fuente\n\n"); 
-   
-   
-   
-     switch ( c ) 
-     { 
-         case 'a': 
-         generar(); 
-         break; 
-         case 'b': 
-         printf("Has elegido la Opción b"); 
-         break; 
-         case 'c': 
-         printf("Has elegido la Opción c"); 
-         break; 
-         case 'd': 
-         printf("Has elegido la Opción d"); 
-         break; 
-         case 'e': 
-         printf("Has elegido la Opción e"); 
-         break; 
-         case 'f': 
-         printf("Has elegido la Opción f"); 
-         break; 
-         case 'g': 
-         printf("Has elegido la Opción g"); 
-         break; 
-         case 'h': 
-         printf("Has elegido la Opción h"); 
-         break; 
-         case 'i': 
-         printf("Has elegido la Opción i");break; 
-   
-     }// switch 
-   
-   
-     }while ((c != 'j') && (c != 'J')); 
- } 
-   
-     //return EXIT_SUCCESS; 
-   
- int generar() 
- { 
-     int argc; 
-     char **argv; 
-     ALuint buffers[6], fuente; 
-     char p; 
-   
-     alutInit (&argc, argv); 
-     p = 'h'; 
-   
-     buffers[0] = alutCreateBufferHelloWorld (); 
-     buffers[1] = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0); 
-     buffers[2] = alutCreateBufferWaveform(ALUT_WAVEFORM_SQUARE, 440.0, 0.0, 1.0); 
-     buffers[3] = alutCreateBufferWaveform(ALUT_WAVEFORM_SAWTOOTH, 440.0, 0.0, 1.0); 
-     buffers[4] = alutCreateBufferWaveform(ALUT_WAVEFORM_WHITENOISE, 440.0, 0.0, 1.0); 
-     buffers[5] = alutCreateBufferWaveform(ALUT_WAVEFORM_IMPULSE, 440.0, 0.0, 1.0); 
-   
-     alGenSources (1, &fuente); 
-     printf("'h'ellow, 's'ine, sq'u'are, sa'w'tooh, white'n'oise, 'i'mpulse ('q' para salir): \n"); 
-   
-     do 
-     { 
-         switch ( p ) 
-         { 
-             case 'h': alSourcei (fuente, AL_BUFFER, buffers[0]); 
-             break; 
-             case 's': alSourcei (fuente, AL_BUFFER, buffers[1]); 
-             break; 
-             case 'u': alSourcei (fuente, AL_BUFFER, buffers[2]); 
-             break; 
-             case 'w': alSourcei (fuente, AL_BUFFER, buffers[3]); 
-             break; 
-             case 'n': alSourcei (fuente, AL_BUFFER, buffers[4]); 
-             break; 
-             case 'i': alSourcei (fuente, AL_BUFFER, buffers[5]); 
-             break; 
-         }// switch 
-   
-         alSourcePlay (fuente); 
-         alutSleep (1); 
-     } while ((p != 'q') && (p != 'Q')); 
-   
-     printf("\nTerminando ... \n"); 
-   
-     alDeleteSources(1, &fuente); 
-     alDeleteBuffers(6, buffers); 
-   
-     alutExit (); 
-     return EXIT_SUCCESS; 
- }