ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

「C/C++」って表現がキライ

C/C++」って表現がキライです。

カテゴリ分けでC++専用の記事は「C++」ってカテゴリにした。昨日のマクロの記事はC言語でもC++でも使える内容なので「C++」ってカテゴリはつけなかった。

でもやっぱりカテゴリ分けしたかったので考えてみたら「C/C++」しか思い浮かばなかった。
で、とりあえず「C/C++」カテゴリを作ったのけど、どうも気に入らなくて今のところは「C言語」「C++」って2つのカテゴリ分けで落ち着いた。


C言語C++って違う言語でしょ。
違うとまでは言わなくても、C++C言語を含んでるけど、C言語C++を含んでない。
だからC++を語るときにC言語を含んで語るのはアリだけど、C言語を語るときにC++を含めて語るのはどうかと思う。


基本的な文法*1までは一緒にしてもいいとして、その先は切り離しておかないと言語の区別がつかなくなるんじゃないかな。


基本的な文法といっても変数の宣言の時点でC言語C++では意識的に変えてるけどね。
C言語では変数は使うときのことだけを考えればいいけど、C++の場合は変数が生成されるタイミング(コンストラクタ)のことを考えて宣言するし。


最近はC言語でもC++と同じように変数は使う直前で宣言するようにしてるけど。
具体的にはこんなカンジ。

void fun()
{
    int a;
    ...(なんかの処理)

    // 別の処理がしたいとき
    {
        int b;
        ...(別の処理)
    }
}

ってことで、結構自分が書いたソースはネストが深かったりする^^;


それでもこの方が変数をどこでどう使ってるかがすぐに分かるから好きなんだよね。
関数にすればいいじゃんって話もあると思う。でも、長い処理でもなく共通化する必要もない処理は関数にする必要はないけど、処理としてはまとめておきたい。
こんなときはスコープにまとめておけばいいと思う。


後で関数化したい状況が発生しても、そのスコープごとコピーすればいいし。


結局C言語C言語でちゃんと理解して、C++C++でちゃんと理解して、両者の違いを知って初めて「C/C++」って表現ができると思う。
でもそのころにはC言語C++は違いうと知ってるから「C/C++」って表現には違和感を感じるのではないかな?


うーん、なんか文章を書きなぐってるってカンジだなぁ。。。
もう少し推敲して書かないといかんねぇ。。。

*1:一般的に構造体の直前("Hello World"とかifとかforとか)