¿Qué significa “statement implícita de función”?

#include  int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { return a + b; } 

¿Por qué esto no se comstack, recibo un mensaje que dice la statement implícita de la función addNumbers() ?

Defina la función antes de main() o proporcione su prototipo antes de main() .

Entonces, o bien haz esto:

 #include  int addNumbers(int a, int b) { //definition } int main() { //Code in main addNumbers(a, b); } 

o esto:

 #include  int addNumbers(int, int); int main() { //Code in main addNumbers(a, b); } int addNumbers(int a, int b) { // definition } 

Debe declarar la función antes de llamarla en main (). O bien muévelo antes de main o al menos decláralo allí. Además, debería agregar el return 0 al final de la función principal, ya que se supone que devuelve int .

 #include  int addNumbers(int a, int b) { return a + b; } int main() { int a = 4; int b = 3; addNumbers(a, b); return 0; } 

addNumber() mover toda la función addNumber() encima de main o proporcionar un prototipo. Este último se realiza de la siguiente manera:

 int addNumbers(int a, int b); int main() { // code of main() here } int addNumbers(int a, int b) { //code of addNumbers() here } 

Ponga addNumbers antes de main

 int addNumbers(int a, int b) { return a + b; } int main() { int a = 4; int b = 3; addNumbers(a, b); } 

ACTUALIZACIÓN :

Para imprimirlo, printf("%i",addNumbers(a, b)); mostrará 7 en el caso anterior.

Puede mover toda la función sobre el punto donde se llama, o usar un prototipo de función, como este:

 #include  int addNumbers(int a, int b); // function prototype int main() { int a = 4; int b = 3; addNumbers(a, b); } int addNumbers(int a, int b) { return a + b; } 

Necesitará una statement de addNumbers función addNumbers o su definición aumentada antes del primer uso:

 // 2161304 #include  // forward declaration int addNumbers(int a, int b); int main() { int a = 4; int b = 3; addNumbers(a, b); } // alternatively move this up before main ... int addNumbers(int a, int b) { return a + b; } 

En cuanto a main y return :

Los progtwigs se comstackrán sin. Las firmas de main definidas por el estándar son:

 int main(void) int main(int argc, char **argv) 

Hay tres valores de retorno portátiles:

 0, EXIT_SUCCESS, EXIT_FAILURE 

que se definen en stdlib.h .

Declare la función antes de usarla agregando un prototipo antes de main ():

 int addNumbers(int a, int b); 

o mueva la función addNumbers completa antes de main ().

Estoy de acuerdo con la statement y la definición, pero no obtengo ningún error de comstackción con el código anterior. Mi versión de gcc es “4.4.1-4ubuntu9”. Cualquier idea.

He hecho una pequeña modificación para probar el código.

  #include  int main() { int a = 4; int b = 3; printf("%d", addNumbers(a, b)); // Printf added. } int addNumbers(int a, int b) { return a + b; } 

si su comstackdor es estándar C99, se produce un error y “statement implícita”, ya que la promoción predeterminada es obsoleta en el estándar C99. Si intenta comstackr con el estándar C89, esto estaría permitido.

En C99 es necesario el prototipo de función estándar.

Como el comstackdor ejecuta una línea tras otra, para cuando ve la llamada a la función, debe tener la información sobre la función a la que está llamando la función principal. Así que, amigo mío, debe informarle al comstackdor sobre la función antes de que pueda. utilízalo

Debe declarar la función antes de usar. Recuerda estas 4 partes básicas al tratar con funciones.

  1. Declaración
  2. Llamada
  3. Definición
  4. Regreso