Rozumiem, że inlinesamo 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 inlinerobi 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 inlinepasuje 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 inlineto 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?