Rozumiem, że inline
samo w sobie jest sugestią dla kompilatora i według własnego uznania może wbudować funkcję lub nie, a także wygeneruje kod wynikowy, który można połączyć.
Myślę, że static inline
robi to samo (może być wbudowane lub nie), ale po wstawieniu nie utworzy kodu wynikowego, który można połączyć (ponieważ żaden inny moduł nie może się z nim połączyć).
Gdzie to extern inline
pasuje do obrazu?
Załóżmy, że chcę zastąpić makro preprocesora funkcją wbudowaną i wymagam, aby ta funkcja została wbudowana (np. Ponieważ używa makr __FILE__
i, __LINE__
które powinny być rozwiązywane dla wywołującego, ale nie tej wywoływanej funkcji). Oznacza to, że chcę zobaczyć błąd kompilatora lub konsolidatora na wypadek, gdyby funkcja nie została wstawiona. Czy extern inline
to robi? (Zakładam, że jeśli tak nie jest, nie ma innego sposobu na osiągnięcie tego zachowania niż trzymanie się makra).
Czy są różnice między C ++ i C?
Czy istnieją różnice między różnymi dostawcami i wersjami kompilatorów?