a25_acl4_log03
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* acl4の開発ログ #03
-(by [[K]], 2026.01.01)
** ここまでのもくじ
-[[a25_acl4_log01]]: 2025.12.01(月)#0~2025.12.11(木)#0
** 2026.01.01(木) #0
-ずっと悩んでいました。機能的にやりたいことを実現するのは...
-でもそれをかっこよく書くことができませんでした。どうやっ...
-しかし今日になって、やっといい感じに書く方法を見つけまし...
func(a, b, .c) → func(a, b, ADot1(c))
int func(int a, double b, .char *c) → int func(int a, do...
→ つまりドット1つから書き始めると、それはカッコ閉じか、...
..int d, e; → ADot2(int d, e;)
→ ドット2つから書き始めると、セミコロンまでを ADot2(...)...
func.(a, b, c) → func(ADotArg1, a, b, c)
→ 関数呼び出しの際にドットを入れておくと、ADotArg1という...
func(,a,,c) → func(a, c)
→ 関数呼び出しなどで、不要なコンマはすべて自動で削除され...
-たったこれだけをやってくれる簡易プリプロセッサがあれば、...
** 2026.01.01(木) #1
-どんなことがしたいのか?
--[1] 目立たない方法でいくつかの引数を追加で渡したい。具...
--[2] デバッグモードの時だけ追加の引数を渡したい。→ func(...
--[3] デバッグモードの時だけ変数を宣言したい。そのたびに ...
** 2026.01.07(水) #0
-やりたいことを簡潔にまとめてみます。こんな感じのことをC...
void func()
{
Enter;
MyClass1 *a = new_MyClass1.();
MyClass2 *b = new_MyClass2.(1, 2, 3.4);
aやbを使って色々する.
Leave;
}
// ポイント:
// newしたけどdeleteしなくていい. Leave すると関数内でne...
// Leaveのタイミングで消えてほしくないときは、 newx_......
// [Q] newしたポインタを誤ってreturnとかで返してしまった...
// [A] デバッグレベルが2以上なら、エラーで止まってくれる...
// [Q] Leaveをやり忘れてreturnしたらどうなるの?
// [A] デバッグレベルが2以上なら、エラーで止まってくれる...
** 2026.01.08(木) #0
-昨日くらいから、ライブラリ関数やライブラリマクロを「A」...
-Aは目立ちすぎるんです。邪魔なんです。
-しかしだからといって、何のプリフィクスもなく書いてもよい...
-私の一番のショックだった出来事は、macのXcodeでmaxとかmin...
-そのときに、ライブラリ関数とユーザ関数がぶつからないため...
-うーん、普通にアンダスコアから始めるというルールにしたら...
--参考: https://qiita.com/y-tetsu/items/06e5bf148bc70986...
** 2026.01.08(木) #1
-悪くなさそうなアイデアに到達しました。
-まず、acl4に関係するライブラリ関数やマクロはすべてacl4_...
acl4_Enter, acl4_Leave, acl4_Class, ...
-その上でライブラリ側に以下のような記述を含ませます。
#if (!defined(acl4_Version))
#define acl4_Version 1
#endif
#if (acl4_Version >= 1)
#define Enter acl4_Enter
#define Leave acl4_Leave
...
#endif
#if (acl4_Version >= 2)
...
#endif
#if (acl4_Version >= 3)
...
#endif
-こうすれば、ライブラリ関数やマクロをどこまで acl4_ のプ...
-「そういえば、<windows.h>にも_WIN32_WINNTっていうのがあ...
--https://learn.microsoft.com/ja-jp/cpp/porting/modifying...
** 2026.01.08(木) #2
-[Q] newがどうだとか言っているけど、それって要するにC++の...
-[A] いや別にnewじゃなくてmallocとオブジェクト初期化の関...
- これからいろいろ他の言語の真似をしていくと思います。C+...
** 2026.01.11(日) #0
-<string.h>って、str系の関数とmem系の関数があると思います...
-と思ったらなんとすでにあった!ただしGNU拡張で。
--https://surf.st.seikei.ac.jp/~nakano/JMwww/html/LDP_man...
--旧バージョンにバグがあって気軽に使える感じではないとこ...
** 2026.01.12(月) #0
-10年以上前から使っていたトークン切り出し関数があります。...
-この切り出し関数は、文字を、
--アルファベット(純粋なアルファベットだけではなく、アン...
--数字
--一文字記号(;や,やかっこ類など)
--それ以外の記号
--空白類
-の5つに分類して、
--アルファベットで始まるトークンの2文字目以降はアルファベ...
--数字で始まるトークンの2文字目以降はアルファベットか数字...
--一文字記号は1文字で切り出す
--それ以外の記号は、それ以外の記号が続く限りつなげて切り...
-という簡単なアルゴリズムで切り出していました。こんな単純...
--(ここには書いてないですが、文字リテラルや文字列リテラ...
-でもこのアルゴリズムだと「=+」とか「**」とかがたまに出て...
-しょうがないので、今までは、「=」で始まって「==」ではな...
-ところが今回、こんな例外処理みたいなことをしなくてもうま...
( ) [ ] { } ; , == = ++ += + ...
-みたいに、記号類をスペース区切って並べた文字列を一つ作っ...
-一文字の=よりも二文字の==を前においておけばこれで問題な...
-もっと早く思いつきたかったよー(笑)。
** 2026.01.12(月) #1
-プログラムを実行中に一時停止して、それを全く別のアーキテ...
-これはかつてエミュレータOSであるOSASKを考えていたころに...
-これをそろそろ実装したら面白いかもしれないと今朝思ったも...
** 2026.01.21(水) #0
-C言語を工夫して使っていくか、C++をベースにするかで悩み中...
-あるものは使えばいいっていうのは全くその通りなのですが、...
-まあたぶん、まずはC言語で行けるところまで行く、にすると...
** 2026.01.22(木) #0
-https://cpprefjp.github.io/reference/vector/vector.html ...
--なるほど、私がよく使っていた可変長配列はC++では vector<...
-https://www.kmonos.net/wlog/111.html#_1001100720
--ここの 10/07/05 と 10/07/20 を読んで、私はずっと r=2 を...
-さてではacl4ではなんていうクラス名にすればいいんだろう。...
** 2026.01.24(土) #0
-[[a4_0001]]と[[a4_0002]]を書きました。
-次はVecChrを作ろうと思います。
-5ページくらいになったら、目次ページを作ろうとも思ってい...
終了行:
* acl4の開発ログ #03
-(by [[K]], 2026.01.01)
** ここまでのもくじ
-[[a25_acl4_log01]]: 2025.12.01(月)#0~2025.12.11(木)#0
** 2026.01.01(木) #0
-ずっと悩んでいました。機能的にやりたいことを実現するのは...
-でもそれをかっこよく書くことができませんでした。どうやっ...
-しかし今日になって、やっといい感じに書く方法を見つけまし...
func(a, b, .c) → func(a, b, ADot1(c))
int func(int a, double b, .char *c) → int func(int a, do...
→ つまりドット1つから書き始めると、それはカッコ閉じか、...
..int d, e; → ADot2(int d, e;)
→ ドット2つから書き始めると、セミコロンまでを ADot2(...)...
func.(a, b, c) → func(ADotArg1, a, b, c)
→ 関数呼び出しの際にドットを入れておくと、ADotArg1という...
func(,a,,c) → func(a, c)
→ 関数呼び出しなどで、不要なコンマはすべて自動で削除され...
-たったこれだけをやってくれる簡易プリプロセッサがあれば、...
** 2026.01.01(木) #1
-どんなことがしたいのか?
--[1] 目立たない方法でいくつかの引数を追加で渡したい。具...
--[2] デバッグモードの時だけ追加の引数を渡したい。→ func(...
--[3] デバッグモードの時だけ変数を宣言したい。そのたびに ...
** 2026.01.07(水) #0
-やりたいことを簡潔にまとめてみます。こんな感じのことをC...
void func()
{
Enter;
MyClass1 *a = new_MyClass1.();
MyClass2 *b = new_MyClass2.(1, 2, 3.4);
aやbを使って色々する.
Leave;
}
// ポイント:
// newしたけどdeleteしなくていい. Leave すると関数内でne...
// Leaveのタイミングで消えてほしくないときは、 newx_......
// [Q] newしたポインタを誤ってreturnとかで返してしまった...
// [A] デバッグレベルが2以上なら、エラーで止まってくれる...
// [Q] Leaveをやり忘れてreturnしたらどうなるの?
// [A] デバッグレベルが2以上なら、エラーで止まってくれる...
** 2026.01.08(木) #0
-昨日くらいから、ライブラリ関数やライブラリマクロを「A」...
-Aは目立ちすぎるんです。邪魔なんです。
-しかしだからといって、何のプリフィクスもなく書いてもよい...
-私の一番のショックだった出来事は、macのXcodeでmaxとかmin...
-そのときに、ライブラリ関数とユーザ関数がぶつからないため...
-うーん、普通にアンダスコアから始めるというルールにしたら...
--参考: https://qiita.com/y-tetsu/items/06e5bf148bc70986...
** 2026.01.08(木) #1
-悪くなさそうなアイデアに到達しました。
-まず、acl4に関係するライブラリ関数やマクロはすべてacl4_...
acl4_Enter, acl4_Leave, acl4_Class, ...
-その上でライブラリ側に以下のような記述を含ませます。
#if (!defined(acl4_Version))
#define acl4_Version 1
#endif
#if (acl4_Version >= 1)
#define Enter acl4_Enter
#define Leave acl4_Leave
...
#endif
#if (acl4_Version >= 2)
...
#endif
#if (acl4_Version >= 3)
...
#endif
-こうすれば、ライブラリ関数やマクロをどこまで acl4_ のプ...
-「そういえば、<windows.h>にも_WIN32_WINNTっていうのがあ...
--https://learn.microsoft.com/ja-jp/cpp/porting/modifying...
** 2026.01.08(木) #2
-[Q] newがどうだとか言っているけど、それって要するにC++の...
-[A] いや別にnewじゃなくてmallocとオブジェクト初期化の関...
- これからいろいろ他の言語の真似をしていくと思います。C+...
** 2026.01.11(日) #0
-<string.h>って、str系の関数とmem系の関数があると思います...
-と思ったらなんとすでにあった!ただしGNU拡張で。
--https://surf.st.seikei.ac.jp/~nakano/JMwww/html/LDP_man...
--旧バージョンにバグがあって気軽に使える感じではないとこ...
** 2026.01.12(月) #0
-10年以上前から使っていたトークン切り出し関数があります。...
-この切り出し関数は、文字を、
--アルファベット(純粋なアルファベットだけではなく、アン...
--数字
--一文字記号(;や,やかっこ類など)
--それ以外の記号
--空白類
-の5つに分類して、
--アルファベットで始まるトークンの2文字目以降はアルファベ...
--数字で始まるトークンの2文字目以降はアルファベットか数字...
--一文字記号は1文字で切り出す
--それ以外の記号は、それ以外の記号が続く限りつなげて切り...
-という簡単なアルゴリズムで切り出していました。こんな単純...
--(ここには書いてないですが、文字リテラルや文字列リテラ...
-でもこのアルゴリズムだと「=+」とか「**」とかがたまに出て...
-しょうがないので、今までは、「=」で始まって「==」ではな...
-ところが今回、こんな例外処理みたいなことをしなくてもうま...
( ) [ ] { } ; , == = ++ += + ...
-みたいに、記号類をスペース区切って並べた文字列を一つ作っ...
-一文字の=よりも二文字の==を前においておけばこれで問題な...
-もっと早く思いつきたかったよー(笑)。
** 2026.01.12(月) #1
-プログラムを実行中に一時停止して、それを全く別のアーキテ...
-これはかつてエミュレータOSであるOSASKを考えていたころに...
-これをそろそろ実装したら面白いかもしれないと今朝思ったも...
** 2026.01.21(水) #0
-C言語を工夫して使っていくか、C++をベースにするかで悩み中...
-あるものは使えばいいっていうのは全くその通りなのですが、...
-まあたぶん、まずはC言語で行けるところまで行く、にすると...
** 2026.01.22(木) #0
-https://cpprefjp.github.io/reference/vector/vector.html ...
--なるほど、私がよく使っていた可変長配列はC++では vector<...
-https://www.kmonos.net/wlog/111.html#_1001100720
--ここの 10/07/05 と 10/07/20 を読んで、私はずっと r=2 を...
-さてではacl4ではなんていうクラス名にすればいいんだろう。...
** 2026.01.24(土) #0
-[[a4_0001]]と[[a4_0002]]を書きました。
-次はVecChrを作ろうと思います。
-5ページくらいになったら、目次ページを作ろうとも思ってい...
ページ名: