1年前から Softiesプロジェクトがこれまで使用してきた gccを clangに置き換える方向で準備を進めている。
と言っても gccを廃すかどうかまでは決まって折らず、平行運用することになるかも知れない。
そんな中、gccでは使えないユニバーサルキャラクタ識別子が clangでも使えることが判った。
ちょっと、悪乗りした感じのプログラムを紹介する。
つぎのプログラムが Cで書いた物。実際には C99の仕様である。
#include "C文法定義"
#include "ライブラリ定義"
型定義 構造体 自動車* 自動車;
構造体 自動車 {
文字列 車種;
整数 価格;
};
整数 メイン関数(整数 argc, 文字列* argv) {
自動車 俺の車 = (自動車)メモリ割り当て(サイズ(構造体 自動車));
もし (俺の車 != ぬるぽ) のとき {
俺の車->車種 = "プリウス";
俺の車->価格 = 1234567;
}
表示("[INFO] %s, %d円\n", 俺の車->車種, 俺の車->価格);
戻る 0;
}
ヘッダファイルはつぎの2つ
C文法定義
#ifndef _Included_C文法定義 #define _Included_C文法定義 #define 文字列 char* #define でないとき else #define もし if #define 整数 int #define 戻る return #define サイズ sizeof #define 構造体 struct #define 型定義 typedef #define メイン関数 main #define のとき #endif /* _Included_C文法定義 */
ライブラリ定義
#ifndef _Included_ライブラリ定義 #define _Included_ライブラリ定義 #include#include #define ぬるぽ NULL #define 表示 printf #define メモリ割り当て malloc #endif /* _Included_ライブラリ定義 */
ついでに必要最小限の Makefile
CC = clang
つぎのようにビルドして
make Main
実行する。
$ ./Main [INFO] プリウス, 1234567円
Javaは初期の言語仕様から識別子に日本語が使えた。
しかし、#define機能がないのでキーワードまでは置き換えられない。
0 件のコメント:
コメントを投稿