[Megoldva] C: incompatible implicit declaration

Fórumok

Sziasztok!

Egy figyelmeztetést kapok a gcc-től, amit nem értek. A kód ez lenne:


	char str[] = "xyz";
	size_t len;

	len = strlen(str);

Az utolsó sorra ezt az üzenetet kapom:

warning: incompatible implicit declaration of built-in function 'strlen'

Szerintetek, miért van?
A dokumentációm alapján az strlen() függvény size_t típust ad vissza. A program működik, de miért ír ilyen figyelmeztetést?

gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)

Hozzászólások

Az '#include <string.h>' sor kimaradt a forrásból.

mert a fordító implicit deklarálja 'int strlen();' módon
Az ANSI C-ben nem kötelező megadni a deklarációban a paraméterek típusát, elég ha a nevét és a visszatérési értékét tudja a fordító, a függvény meghívójáé a feleősség hogy jól paraméterezze a függvényt (jó paraméterek kerüljenek a stack-re)
Aztán a standard C library-ban a linker meg is találja az strlen nevű függvényt, és boldogan használja.

Ha hibás működést akarsz látni:
Próbáld ki mondjuk az sqrt függvényt math.h include-olás nélkül, a visszatérési értéket int-nek fogja venni a fordító miközben az erdemény double.

Pontosítsatok bátran!