おりにゃんのふぃーりん☆ぷろぐらみん!

プログラミング(主にC言語)の基礎的な事を脳を溶かしたレベルの語彙力で綴っていきます。

しーげんご!

私が今メインで触ってるのはUnityのC#ですが、学校の授業でC言語も触ってたので先にそちらで(主に初学者の方が)悩む(?)ところを書いていこうかなーと思います。

えすてぃーでぃーあいおー?

まずはこちらのソースコードを。

#include<stdio.h>

int main()
{
    printf("Hello,world!\n");
    return 0;
}

実行結果はもちろん

Hello,world!

となりますよね。分からない人は一度確認してみてね!

ここで最初に書く#include<stdio.h> 。授業だと「書くのが当たり前」とか「おまじない程度に」とか、さらーっと流されることありますよね。

これは一体何なのか…気になりませんか?
気になりますよね!?
ねっっっっっ!?!?(威圧するな←)

実はこのstdio.h…

Standard Input/Outputの略なんです!!

直訳すると、「標準入力/出力」。また、".h"はヘッダーファイルを表しています。

このヘッダーファイル、インクルードするだけでprintfやscanfなどの画面出力や入力が使えるようになるんです!すっげぇな(語彙力←)

stdio.hがつかえないせかい

もしstdio.hが使えないとすると、printfも使えないことになります。 printf無しで同じ出力を得ようとすると…

#include<unistd.h>

int main()
{
    const char msg[] = "Hello,world!";
    write(STDOUT_FILENO, msg, sizeof(msg) - 1);
    return 0;
}

となります。なんだこれめんどくさ

こんな面倒なことをstdio.hをインクルードするだけで簡単におこなえてしまうのです。強い(確信)

後者の記述はどちらかといえばOSいじるような人が使うレベル(偏見)なので、無難にstdio.hをインクルードしてprintfとか使った方がいいと思います。

いんくるーどをわすれたら?

ちなみにインクルードし忘れたままコンパイルすると…

警告: incompatible implicit declaration of built-in function ‘printf’

と出るだけで普通にコンパイルが通ってしまいました。(直訳するとprintfっていう非互換の暗黙的な宣言しとるぞって意味です)

たぶんコンパイラのバージョンとかでこの辺は変わってくると思うので、こんな感じの警告が出た時はちゃんとコードに不備がないか確認しましょうね(戒め)

まとめ

  • stdio.hは標準入出力を司り、コード入力を楽にしている
  • インクルードし忘れたままprintfなどを使おうとすると、エラー、あるいは警告が発生する

さいごに

今回はここまでにしようと思います。しばらくはC言語について書くことになると思います。語彙力ないのと単純に忙しいので更新は不定期になりますが、気長に待っていただけると嬉しいです。

間違ってもstudio.hとか書くんじゃないぞ…?絶対だぞ…?フリなんかじゃないからな…?