Capisco che di inline
per sé è un suggerimento per il compilatore e, a sua discrezione, può o meno inline la funzione e produrrà anche codice oggetto collegabile.
Penso che static inline
faccia lo stesso (può o non può inline) ma non produrrà codice oggetto collegabile quando inline (poiché nessun altro modulo potrebbe collegarsi ad esso).
Dove si extern inline
inserisce nell'immagine?
Supponiamo di voler sostituire una macro del preprocessore con una funzione inline e richiedere che questa funzione venga inline (ad esempio, perché utilizza le macro __FILE__
e __LINE__
che dovrebbero risolversi per il chiamante ma non questa funzione chiamata). Cioè, voglio vedere un errore del compilatore o del linker nel caso in cui la funzione non venga inline. Fa extern inline
questo? (Presumo che, in caso contrario, non ci sia alcun modo per ottenere questo comportamento se non attenersi a una macro.)
Esistono differenze tra C ++ e C?
Esistono differenze tra diversi fornitori e versioni di compilatori?