C 言語のダイグラフ

C 言語にはダイグラフとよばれる環境により存在しない記号の代替となる記法を提供している。2文字のトークンで6種類ある。

  • <: => [
  • :> => ]
  • <% => {
  • %> => }
  • %: => #
  • %:%: => ##

例えば、以下のような簡単なソースコードがあったとする。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int hoge[] = { 123 };
    printf("%d\n", hoge[0]);
    exit(0);
}

これは普通に動作するコードです。

$ mkdir -p bin
gcc ./src/main.c -o ./bin/main -Wall
$ ./bin/main.c
123

このソースコードをダイグラフを使ったものに差し替えてみる。

%:include <stdio.h>
%:include <stdlib.h>

int main(int argc, char *argv<::>) <%
    int hoge<::> = <% 123 %>;
    printf("%d\n", hoge<:0:>);
    exit(0);
%>

すると、ふつうにコンパイルできます。

$ mkdir -p bin
gcc ./src/main.c -o ./bin/main -Wall
$ ./bin/main.c
123

トライグラフなるものもあるようだが、gcc ではデフォルトでオフってあるそうです

ところでダイグラフってどういう意味?

ダイグラフ (英語: digraph)
二重音字
合字
Pascalなどのコンピュータ言語で記号1文字を2文字で書き表すこと。例:「(.」→「[」。背景・目的などはトライグラフを参照。

Wikipedia より

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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