C++の日本語識別子

TwitterのTLを眺めていたところ、C++で日本語の識別子を使えるという話が出てきました。

改めてC++11のドラフトを確認したところ、確かにunicode文字を識別子に使用することができます。ということは、型名、関数名、変数名も日本語にできるわけです。そこでちょっとしたプログラムを書いて遊んでみました。

#include "iostream"

int 階乗(int);

int main()
{
    int 試料 = 10;

    std::cout.imbue(std::locale(""));
    std::cout << 試料 << "の階乗は" << 階乗(試料) << std::endl;
    return 0;
}

int 階乗(int 与えられた数)
{
    if (与えられた数 > 1)
        return 与えられた数 * 階乗( 与えられた数 -1 );
    else
        return 1;
}

なんと言うか、かゆいです(笑)。

古い世代なので手近なコンピュータが漢字を表示できない時代(というか、そもそも手近にコンピュータがなかった時代)にプログラム言語の基礎を学んでいます。なのでプログラムが識別子として日本語を許すということに居心地の悪さを感じるのです。もっと言えば、漢字をコメントに書くことすらトラブルと背中合わせだったことも経験していますし、ファイル名が漢字だと今でも不吉なものを感じる世代です。受け入れろと言うことに無理があります。

完全に時代から取り残されていますね。

さて、コンパイルですが、C++11に準拠したコンパイラでなければなりません。私が使っているUbuntu 16.04 LTSのg++コンパイラ(gcc version 5.4.0 20160609 )はC++11規格に対応しているはずですが、何故かエラーが大量に出てきます。よしよし、こいつも時代に取り残されているぞ(笑)。

調べたところLLVM Clangなら大丈夫ということでClangをインストールします。

sudo apt-get install clang

ClangのC++コマンドはclang++です。

成功

ということで、無事日本語識別子を含むC++プログラムをコンパイル&実行することができました。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください