組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

main関数の引数について

linuxをいじっていて初めて意識したので、メモしときます。

OS載せてないマイコンのプログラムとかばっかり作ってたので、

main関数の引数なんてまったく意識したことなかったなぁ・・・。

 

さて、以下のようなプログラムで勉強します。

環境はRaspberry Piです。ファイル名はarg_test.cで作ってみた。

#include <stdio.h>
int main(int argc, char *argv[])
{
  int i;
  
  printf("arg test!!\n");
  printf("argc = %d\n", argc);
  
  for ( i = 0; i < argc; i++ ) {
    printf(argv[i]);
    printf("\n");
  }
  return 0;
}

んでコンパイル

cc -o arg_test arg_test.c

するとarg_testって実行ファイルができてると思うので、こいつで実験。

まずは普通に実行してみる。

sudo ./arg_test

実行結果は↓みたいになってます。

arg test!!
argc = 1
./arg_test

引数は1個で./arg_testですよってことで理解しました。

次は引数を追加して実行してみます。abc と defね。

sudo ./arg_test abc def

実行結果↓

arg test!!
argc = 3
./arg_test
abc
def

ということでmain関数の引数でプログラムの動作を切り分けることができそうだなぁって勉強になりました。