Progtwig de ejemplo 1. Note int
en typedef
en la primera línea:
typedef int (*p)(); //Statement 1 int foo() { return 0; } int main() { int c; pq=foo; c=(*q)(); printf("%d",c); return 0; } Output:0
Progtwig de ejemplo 2. Todos iguales, pero sin int
en la primera línea:
typedef (*p)(); //Statement 1 int foo() { return 0; } int main() { int c; pq=foo; c=(*q)(); printf("%d",c); return 0; } Output:0
La salida es igual en ambos casos. No genera ningún error. ¿Por qué?
Siempre debe publicar el comstackdor (y la versión) que está utilizando en preguntas como esta.
Supongo que está utilizando un comstackdor C89 que permite int implícito.
Si comstackste en el modo C99, obtendrías un diagnóstico, pero en C89 y C estándar, la palabra clave int
era opcional.
Así:
extern a; main(argc, argv) char **argv; { auto i; ... return 0; }
y se permitieron otros estilos de encoding que son una abominación según los estándares modernos. (La variable a
es un int
; el argumento argc
es un int
; la variable i
es un int
; el tipo de retorno de main()
es un int
.) Tenga en cuenta que hasta C99, se suponía que no debía omitir el return 0;
de main()
; si lo hizo, el valor devuelto al entorno de llamada no estaba definido.