私はエラーハンドラに行番号とファイル名を渡すマクロを持っている:挙動
#define SYSTEM_FAILURE (error_code, comment) \
System_Failure((error_code), (comment), __LINE__, __FILE__);
インライン関数の内部で使用された場合__LINE__
が解決されますどのように?
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;
}
は__LINE__
は、ヘッダファイル内の行番号、又はインライン関数は、(ソースコードに「ペースト」ないと仮定コンパイラ)と呼ばれているソースファイルの行番号が含まれていますか?
動作はコンパイラによって異なる可能性があり、標準状態とは異なる可能性があります。 –
Downvoters:なぜdownvoteですか?この問題は、組み込みシステムでC、インライン関数、およびマクロを使用することによって発生します。 –
@Thomas、あなた自身のコンパイラでこれをテストし、あなたの質問に結果を含めることができます(これにより、 '私のプリプロセッサはこれを標準ですか?')。 –