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 件のコメント:
コメントを投稿