ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
C言語実力診断クイズ

これは __FILE__ と __LINE__ というマクロに関する問題です。こういうのを組み込みマクロといいます。ほかにもいくつかありますし、コンパイラごとに特有の組み込みマクロもいろいろあります。

__FILE__ と __LINE__ はそれぞれ現在コンパイル対象になっているファイル名と行番号を表します。これを上手く使うと、デバッグに役立ちます。典型的な例はアサーション(assertion)ですね。これについては「プログラミングのはなし」の「ASSERT する」を参照してください。

#include <stdio.h>

#define SHOW_MESSAGE(M) ShowMessage((M),__FILE__,__LINE__)

static void ShowMessage( const char *pcMsg, const char *pcFileName, int nLineIdx );

void Func(void)
{
    SHOW_MESSAGE( "Hello!" );
}

static void ShowMessage( const char *pcMsg, const char *pcFileName, int nLineIdx )
{
    printf( "FILE:%s\nLINE:%d\nMESSAGE:%s\n", pcFileName, nLineIdx, pcMsg );
}

<< 問題一覧に戻る

(「C言語実力診断クイズ」は2001年5月から9月にかけて作成されたコンテンツです。)