Implicit int

„ Implicit int ” este argoul pentru regula limbajului de programare C, conform căreia absența specificatorilor de tip într-o declarație sau nume de tip înseamnă un tip int. De exemplu:

const i ; /* OK: la fel ca const int i; */

Regula implicită intse aplică oriunde sunt solicitați specificatorii de declarație , cu excepția cazului în care se specifică calificatorii de tip într- un declarator pointer , deoarece nu permite specificatorii de tip. De exemplu:

typedef I ; /* OK: la fel ca typedef int I; */

În plus, regula implicită intse aplică unei intrări de tip returnat într-o definiție a funcției, chiar dacă toți specificatorii de declarație sunt omiși din acel tip. De exemplu:

* f () /* OK: la fel ca int *f() { ... */ { returnează 0 ; }

În caz contrar, cel puțin unul dintre specificatorii declarației trebuie să fie prezenți. De exemplu:

* f (); /* EROARE: nu există specificatori de declarație și aceasta nu este o definiție a funcției */

Ultima cerință este de mare importanță practică: extinderea regulii implicite intla toate cazurile care ar putea fi tratate ca un set omis de specificatori de declarații ar duce la numeroase ambiguități sintactice . De exemplu, într-un astfel de caz, următoarea intrare pentrug

int f () { g (); }

ar putea fi interpretată și ca o declarație de funcție fără un prototip:

int f () { intg ( ); }

și ca declarație de prototip de funcție care ia un singur argument de tip int:

int f () { int g ( int ); }

și chiar ca apel la o funcție cu acest nume:

int f () { g (); /* apelează funcția g */ }

Note