p20251006a
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* ネスト可能なダブルクォーテーションからはじまる、プリプ...
-(by [[K]], 2025.10.06)
** (1)
-私はかつてプリプロセッサが嫌いで、C言語にプリプロセッサ...
-でも今は違ってC言語がプリプロセッサとそれ以降の処理フェ...
-さて私は以前から、数式のカッコはネスト(=入れ子)が簡単...
-この「ネスト可能なダブルクォーテーション」があると、プリ...
** (2)
-プリプロセッサの #define は互換性のために維持しますが、...
#.def Abc(x, y, z), /"myfunc(x*y, x+y, z-x)"/
--このとき、右側にネスト可能なダブルクォーテーションが使...
--この #.def は、ネスト可能なダブルクォーテーションのおか...
#.def MakeOp2Func(nam, op), /"
int nam(int x, int y)
{
return x op y;
}
"/
--この「どこが #.def の終わりなのかわかる」を利用して、1...
#.def Const1, /"123"/ #.def Const2, /"456"/
-#if 類も拡張形式を追加して、 #.if や #.else などを用意し...
#.if !defined(Const1), /"#.def Const1, /"123"/ "/
--#.if がどこで終わるのかはすぐにわかるので、 #.endif は...
-#.def の中に #.if などを含むことができます。かなり複雑な...
** (3)
-上記説明を書いているときに、
#.if !defined(Const1), /"#.def Const1, /"123"/ "/
-が読みやすくないと感じたので、以下の記法も許すことにしま...
#.if !defined(Const1), [/"#.def Const1, [/"123"/]"/]
#.if !defined(Const1), {/"#.def Const1, [/"123"/]"/}
#.if !defined(Const1), </"#.def Const1, (/"123"/)"/>
-また、ネストするつもりがない時は、 "..."で代用することも...
#.if !defined(Const1), [/"#.def Const1, "123" "/]
** (4)
-["..."]という記法を思いついた時のメモ: [[a24_idea001]]
-なぜ ["..."] がしっくりこないと思ったのか?
--C言語では配列の添え字に文字列を書くことはないですが、ほ...
--Pythonでは list = [1, “hello”, 3.14] みたいな書き方も普...
-[[a24_longdef]] では #longdef というプリプロセッサ拡張を...
** (5)
-以下はネスト可能なダブルクォーテーションとは無関係ですが...
#.adddef Abc, "+1" // Abcのdef内容に +1 を書き足します。
#.def Abc, "0"
#.def IncAbc, /"#.adddef Abc, "+1" "/
printf("%d ", Abc); IncAbc;
printf("%d ", Abc); IncAbc;
printf("%d ", Abc);
→ 「0 1 2 」と表示されます。
--この機能は、 [[a21_txt01_5]] の中に出てきた phrCmp() の...
--ほかにこんな使い方もできます。
p0 = malloc(123); #.adddef FreBuf, "free(p0);"
p1 = malloc(456); #.adddef FreBuf, "free(p1);"
p2 = malloc(789); #.adddef FreBuf, "free(p2);"
...
...
...
FreBuf; #.undef FreBuf; // 新しくmallocを追加しても、記...
--#.adddef は #.add とも書けます。
-最後に説明するのは #.final です。これは #.adddef した最...
#.def Sz "0"
int a[#.final(Sz)];
...
a[Sz] = 123; #.add Sz, "+1"
...
a[Sz] = 456; #.add Sz, "+1"
...
#.undef Sz;
** (6)
-些末な機能として、#.!(...) があります。これは...の中をsp...
puts(# #.!("Sz=%d", Sz)); → puts("Sz=2"); になる。
-(以下編集中)
終了行:
* ネスト可能なダブルクォーテーションからはじまる、プリプ...
-(by [[K]], 2025.10.06)
** (1)
-私はかつてプリプロセッサが嫌いで、C言語にプリプロセッサ...
-でも今は違ってC言語がプリプロセッサとそれ以降の処理フェ...
-さて私は以前から、数式のカッコはネスト(=入れ子)が簡単...
-この「ネスト可能なダブルクォーテーション」があると、プリ...
** (2)
-プリプロセッサの #define は互換性のために維持しますが、...
#.def Abc(x, y, z), /"myfunc(x*y, x+y, z-x)"/
--このとき、右側にネスト可能なダブルクォーテーションが使...
--この #.def は、ネスト可能なダブルクォーテーションのおか...
#.def MakeOp2Func(nam, op), /"
int nam(int x, int y)
{
return x op y;
}
"/
--この「どこが #.def の終わりなのかわかる」を利用して、1...
#.def Const1, /"123"/ #.def Const2, /"456"/
-#if 類も拡張形式を追加して、 #.if や #.else などを用意し...
#.if !defined(Const1), /"#.def Const1, /"123"/ "/
--#.if がどこで終わるのかはすぐにわかるので、 #.endif は...
-#.def の中に #.if などを含むことができます。かなり複雑な...
** (3)
-上記説明を書いているときに、
#.if !defined(Const1), /"#.def Const1, /"123"/ "/
-が読みやすくないと感じたので、以下の記法も許すことにしま...
#.if !defined(Const1), [/"#.def Const1, [/"123"/]"/]
#.if !defined(Const1), {/"#.def Const1, [/"123"/]"/}
#.if !defined(Const1), </"#.def Const1, (/"123"/)"/>
-また、ネストするつもりがない時は、 "..."で代用することも...
#.if !defined(Const1), [/"#.def Const1, "123" "/]
** (4)
-["..."]という記法を思いついた時のメモ: [[a24_idea001]]
-なぜ ["..."] がしっくりこないと思ったのか?
--C言語では配列の添え字に文字列を書くことはないですが、ほ...
--Pythonでは list = [1, “hello”, 3.14] みたいな書き方も普...
-[[a24_longdef]] では #longdef というプリプロセッサ拡張を...
** (5)
-以下はネスト可能なダブルクォーテーションとは無関係ですが...
#.adddef Abc, "+1" // Abcのdef内容に +1 を書き足します。
#.def Abc, "0"
#.def IncAbc, /"#.adddef Abc, "+1" "/
printf("%d ", Abc); IncAbc;
printf("%d ", Abc); IncAbc;
printf("%d ", Abc);
→ 「0 1 2 」と表示されます。
--この機能は、 [[a21_txt01_5]] の中に出てきた phrCmp() の...
--ほかにこんな使い方もできます。
p0 = malloc(123); #.adddef FreBuf, "free(p0);"
p1 = malloc(456); #.adddef FreBuf, "free(p1);"
p2 = malloc(789); #.adddef FreBuf, "free(p2);"
...
...
...
FreBuf; #.undef FreBuf; // 新しくmallocを追加しても、記...
--#.adddef は #.add とも書けます。
-最後に説明するのは #.final です。これは #.adddef した最...
#.def Sz "0"
int a[#.final(Sz)];
...
a[Sz] = 123; #.add Sz, "+1"
...
a[Sz] = 456; #.add Sz, "+1"
...
#.undef Sz;
** (6)
-些末な機能として、#.!(...) があります。これは...の中をsp...
puts(# #.!("Sz=%d", Sz)); → puts("Sz=2"); になる。
-(以下編集中)
ページ名: