C言語のlineを関数で使う方法
- 作成日: 2022-08-17
- 更新日: 2023-12-25
- カテゴリ: C言語
C言語における行番号のあつかい
C言語ではprintf()
などで行番号を出力したい時にLINEマクロを使います。
このマクロを使うと現在のコード上の行番号を出力できます。
#include <stdio.h>
int main(void) {
printf("%d\n", __LINE__); // 4
return 0;
}
関連記事
自作関数read_fileでファイルを読み込み【ファイル入出力, コマンド】
目が覚めるC言語のdo-while文の使い方【ループ処理、初心者向け】
明快!C言語のcontinue文の使い方
君はまだC言語のdefineのすべてを知らない【マクロ、プリプロセス】
プログラミングの関数とは?わかりやすく解説します
関数の呼び出し時の行番号を出力する
このマクロを関数と一緒に使う方法。
つまり関数の呼び出し位置の行番号を出力する方法ですが、これはマクロ関数を使うのが一般的です。
実体の関数のラップとしてマクロ関数を1つ作っておいて、そのマクロ関数から実体の関数を呼び出します。
#include <stdio.h>
void show(const char *text, long line) {
printf("%ld: %s\n", line, text);
}
#define SHOW(text) show(text, __LINE__)
int main(void) {
SHOW("Hello"); // 10: Hello
return 0;
}
↑の場合、main関数内で呼び出しているのはSHOW()
です。
そしてSHOW()
マクロ関数は内部でshow()
関数を呼び出しています。
この時にshow()
関数の引数に__LINE__
を渡します。
こうするとSHOW()
の呼び出し位置の行番号がshow()
関数に渡されます。
マクロ関数はただのコードの置き換えです。
そのためSHOW("Hello")
の呼び出しは実際にはshow("Hello", __LINE__)
に置き換わります。
行番号の変更
また行番号は#line
プリプロセッサ指令で変えることができます。
#include <stdio.h>
int main(void) {
printf("%d\n", __LINE__); // 4
#line 100
printf("%d\n", __LINE__); // 100
#line 200
printf("%d\n", __LINE__); // 200
return 0;
}
おわりに
今回はC言語のlineを関数で使う方法を解説しました。
__LINE__
はデバッグなどで重宝します。
🦝 < 行番号を操ろう
🐭 < デバッグに使えるよ