Error: “Declaración implícita de función …” en todas mis funciones

Aquí está el código

main() { short sMax = SHRT_MAX; int iMax = INT_MAX; long lMax = LONG_MAX; // Printing min and max values for types short, int and long using constants printf("range of short int: %i ... %i\n", SHRT_MIN, SHRT_MAX); printf("range of int: %d ... %d\n", INT_MIN, INT_MAX); printf("range of long int: %ld ... %ld\n", LONG_MIN, LONG_MAX); // Computing and printing the same values using knowledge of binary numbers // Short int computed_sMax = computeShort() / 2; printf("\n Computed max and min short values: \n %i ... ", computed_sMax); int computed_sMin = (computeShort()/2 + 1) * -1; printf("%i\n", computed_sMin); //Int int computed_iMax = computeInt() / 2; printf("\n Computed min and max int values: \n %i ... ", computed_iMax); int computed_iMin = computeInt() / 2; printf("%i", computed_iMin); return 0; } int computeShort() { int myShort = 0; int min = 0; int max = 16; for (int i = min; i < max; i++) { myShort = myShort + pow(2, i); } return myShort; } int computeInt() { int myInt = 0; int min = 0; int max = 32; for (int i = min; i < max; i++) { myInt = myInt + pow(2, i); } return myInt; } 

Tienes que declarar las funciones antes de usarlas:

 int computeShort(); // declaration here int main() { computeShort(); } int computeShort() { // definition here } 

Un enfoque alternativo, pero menos recomendable , es definir las funciones antes que las principales, ya que la definición también sirve como statement:

 int computeShort() { // return 4; } int main() { computeShort(); } 

Pero, en general, es mejor tener una statement por separado para las funciones utilizadas, porque entonces no está obligado a mantener un cierto orden en la implementación.

Debes declarar funciones antes de llamarlas. Esto es cierto incluso para partes de la biblioteca estándar.

Por ejemplo, printf() se declara haciendo:

 #include  

Para sus propias funciones, ya sea:

  • Mueve las definiciones arriba de main() ; Las definiciones sirven también como declaraciones.
  • Agregue prototipos antes de las llamadas, generalmente justo antes de main() :

    int computeShort();

Además, tenga en cuenta que

  • Las funciones locales deben ser declaradas static .
  • Las funciones que no acepten ningún argumento deben tener una lista de argumentos de (void) , not () que significa algo más.