Portál AbcLinuxu, 10. května 2025 07:14
rozhrani.h:67: warning: inline function ‘moje_inline_funkce’ declared but never defined
a na konci jeste hodi error:
program_main.c:145: undefined reference to ‘moje_inline_funkce’
Pouzivam GCC verze 4.3.0. Uplne stejny program jsem zkousel zkompilovat na serveru pomoci GCC 4.2.3 a zde to reklo pouze warning:
program_main.c:10: warning: C99 inline functions are not supported; using GNU89
Pouze tento warning a program se zkompiloval ok a funguje. Je tedy chyba v nove verzi GCC? Pokud ano, velmi bych potreboval vedet jak to vyresit. Preklad provadim s temito parametry: -std=c99 -pedantic -Wall -W -g. Dekuji.
int moje_inline_funkce (int parametr) __attribute__ ((always_inline));
v deklaraci, v implementaci už se to psát asi nemusí (teď nevím, musel bych si to ověřit)
Ale možná se pletu.
Inline funkce je inline právě proto, že nemá žádou adresu, ale rozepíše se přímo v místě, kde ji chcete použít. Takže ji nemůžete definovat jen v jednom z modulů, ale musíte její definici dát přímo do toho hlavičkového souboru.
Spíš je otázkou, proč vám to předtím přeložit šlo. IMHO proto, že GCC stejně klíčové slovo inline
bere spíš jen jako jakýsi hint, takže občas inlinuje funkci, u které inline
nepoužijete, a občas naopak z funkce deklarované jako inline
, udělá obyčejnou.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.