Ho una macro che passa il numero di riga e il nome del file a un gestore di errori:Comportamento di __LINE__ a funzioni inline
#define SYSTEM_FAILURE (error_code, comment) \
System_Failure((error_code), (comment), __LINE__, __FILE__);
Come sarà il __LINE__
essere risolto quando viene utilizzato all'interno di una funzione inline?
file.h:
inline int divide(int x, int y)
{
if (y == 0)
{
SYSTEM_FAILURE(ENUM_DIVIDE_BY_ZERO, "divide by zero error");
}
return x/y;
}
Sarà __LINE__
contenere il numero di riga all'interno del file di intestazione, o il numero di riga del file di origine in cui la funzione inline viene chiamata (assumendo compilatore non un "incolla" nel codice sorgente)?
Impossibile provarlo in quanto il comportamento potrebbe essere diverso sui compilatori e potrebbe non essere lo stato standard. –
Downvoters: perché il downvote? La domanda nasce dall'uso di C, funzioni inline e macro in un sistema embedded. –
@Thomas, testando questo sul tuo compilatore e includendo i risultati nella tua domanda (rendendo così più simile a "il mio preprocessore fa questo, è standard?") Avrebbe (e può ancora) neutralizzare molti dei downvotes. –