
■static関数のプロトタイプ宣言を書くのが面倒くさい
#include <stdio.h>
//static関数のプロトタイプ宣言を書くのが面倒臭い
static void a1( //業務でよく記述する関数のコメント
int argc, //業務でよく記述する引数のコメント
char *argv[]); //業務でよく記述する引数のコメント
static void a2( //業務でよく。。。以下略
int argc, char *argv[]);
static void b1(int argc, char *argv[]);
static void b2(int argc, char *argv[]);
static void c1(int argc, char *argv[]);
static void c2(int argc, char *argv[]);
// main()関数を先に記述して
//「上から下に読めるように関数配置」と
// よくWEBで解説されているが、そもそも無理
int main(int argc, char *argv[]){
a1(argc, argv);
b1(argc, argv);
}
static void a1(int argc, char *argv[]){
a2(argc, argv);
}
//mainを先に書く派はここまでの記述順番は同じだろうが
//次に記述する3番目の関数は a2()かb1()か
//人それぞれで違う。
static void a2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
static void b1(int argc, char *argv[]){
b2(argc, argv);
c1(argc, argv);
}
static void b2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
static void c1(int argc, char *argv[]){
c2(argc, argv);
}
static void c2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
業務で、
「ソースコードを上から下へ読めるようにmain()関数を上に書く」とルール化して、
static関数のプロトタイプ宣言を
何百行もコメント付きで記述するプロジェクトは多いですが、
無駄です。
■呼び出しより先にstatic関数定義するとプロトタイプ宣言は書かなくてOK
#include <stdio.h>
static void a2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
static void a1(int argc, char *argv[]){
a2(argc, argv);
}
static void c2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
static void c1(int argc, char *argv[]){
c2(argc, argv);
}
static void b2(int argc, char *argv[]){
if(argc==1) puts(argv[0]);
}
static void b1(int argc, char *argv[]){
b2(argc, argv);
c1(argc, argv);
}
int main(int argc, char *argv[]){
a1(argc, argv);
b1(argc, argv);
}
関数の定義がプロトタイプ宣言を兼ねるので
同じ事を2回書かなくてすみます。
■static関数のプロトタイプ宣言を書いている暇のある人は
main() <int main (int argc, char *argv[]) at f3.c:15>:
a1() <void a1 (int argc, char *argv[]) at f3.c:19>:
a2() <void a2 (int argc, char *argv[]) at f3.c:26>:
puts()
b1() <void b1 (int argc, char *argv[]) at f3.c:29>:
b2() <void b2 (int argc, char *argv[]) at f3.c:33>:
puts()
c1() <void c1 (int argc, char *argv[]) at f3.c:36>:
c2() <void c2 (int argc, char *argv[]) at f3.c:39>:
puts()
●Linux系環境の人は以下を学習
(1)cflow コマンドの使い方
(2)vim+ctagsコマンドの使い方
⇒CTRL+]によるタグジャンプ
●Visual Studio Code環境の人は以下を学習
(1)F12キーの使い方
(2)”呼び出し階層の表示”
■まとめエディタのタグジャンプ機能を学習しよう。
プロトタイプ宣言と関数定義で
同じ事を2回書く暇があれば、
エディタのタグジャンプ機能を学習しよう。