KHPC_v001doc01
の編集
https://khfdpl.osask.jp:443/wiki/?KHPC_v001doc01
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* KHPC ver.0.01の内部資料的なもの -(by [[K]], 2016.05.19) ** 基本仕様 -KHPCの2番目のバージョン。KHPCは[[persistent-C>persistent_C]]の簡易実装を目指したツール群。 -基本方針: とにかくできるだけ手抜きをする。次のバージョンでまともにすればいい。手抜きは美徳である。 -このバージョンの目玉:「persistent命令」をサポートする。 ** ダウンロード -http://khfdpl.osask.jp/download/khpc001a.zip --ソースはTab=4を想定。 ** サンプルコード #include <stdio.h> #include <khpc0.h> persistent int i = 0, sum = 0; persistent char str[16] = "hello, world"; int main() { persistent_load(0); for (; i <= 100; i++) { persistent_save(0); sum += i; } printf("sum=%d\n", sum); return 0; } ** ビルド方法 -(1) prompt>mksrc test.c > pd-test.c を実行する。 --すると pd-test.c というファイルが生成される。 -(2) prompt>mksrc :PDEF test.c > pdef.c を実行する。 --すると pdef.c が生成される。 -(3) prompt>gcc -o test.exe -O3 -I. pd-test.c pdef.c khpc0.c とする。 --これで出来上がり。 --gccでtest.cを指定する必要はないです。test.cの内容はpd-test.cにすべて反映されています。 --khpc0.cはライブラリです。 -(4) なんでこんなややこしい仕様なのかというと、分割コンパイルにも対応できるようにするためです。もし、ファイルが、prog0.c prog1.c prog2.cの3つに分割されていたら、以下のようにします。 prompt>mksrc prog0.c > pd-prog0.c prompt>mksrc prog1.c > pd-prog1.c prompt>mksrc prog2.c > pd-prog2.c prompt>mksrc :PDEF prog0.c prog1.c prog2.c > pdef.c prompt>gcc -o prog.exe -O3 -I. pd-prog0.c pd-prog1.c pd-prog2.c pdef.c khpc0.c --説明の都合上、プロンプトから入力するかのように書いていますが、実際はバッチファイルかMakefileにするのがよいでしょう。 ~ -pd-test.cの実体はこんな感じです。なーんだ、と言いたくなる内容かもしれません。 #define persistent #include "test.c" void persistent_def(void *p, int size, int grpId, const char *id); void persistent_default_test_c() { persistent_def(&i, sizeof(i), 0, "i"); persistent_def(&sum, sizeof(sum), 0, "sum"); persistent_def( str, sizeof(str), 0, "str"); } -pdef.cの実体はこんな感じです。 void persistent_grp(int grpId, const char *path, const char *tmp, const char *memo); void persistent_default_test_c(); void persistent_default() { persistent_grp(0, "p-vars.pbd", "p-vars.pb_", "(local)"); persistent_default_test_c(); return; } -この persistent_default() は persistent_load(0); のタイミングで自動的に呼び出されます。 ** 関数群 -[[KHPC_v000doc01]]に準ずる。 ** メモなど * こめんと欄 #comment
タイムスタンプを変更しない
* KHPC ver.0.01の内部資料的なもの -(by [[K]], 2016.05.19) ** 基本仕様 -KHPCの2番目のバージョン。KHPCは[[persistent-C>persistent_C]]の簡易実装を目指したツール群。 -基本方針: とにかくできるだけ手抜きをする。次のバージョンでまともにすればいい。手抜きは美徳である。 -このバージョンの目玉:「persistent命令」をサポートする。 ** ダウンロード -http://khfdpl.osask.jp/download/khpc001a.zip --ソースはTab=4を想定。 ** サンプルコード #include <stdio.h> #include <khpc0.h> persistent int i = 0, sum = 0; persistent char str[16] = "hello, world"; int main() { persistent_load(0); for (; i <= 100; i++) { persistent_save(0); sum += i; } printf("sum=%d\n", sum); return 0; } ** ビルド方法 -(1) prompt>mksrc test.c > pd-test.c を実行する。 --すると pd-test.c というファイルが生成される。 -(2) prompt>mksrc :PDEF test.c > pdef.c を実行する。 --すると pdef.c が生成される。 -(3) prompt>gcc -o test.exe -O3 -I. pd-test.c pdef.c khpc0.c とする。 --これで出来上がり。 --gccでtest.cを指定する必要はないです。test.cの内容はpd-test.cにすべて反映されています。 --khpc0.cはライブラリです。 -(4) なんでこんなややこしい仕様なのかというと、分割コンパイルにも対応できるようにするためです。もし、ファイルが、prog0.c prog1.c prog2.cの3つに分割されていたら、以下のようにします。 prompt>mksrc prog0.c > pd-prog0.c prompt>mksrc prog1.c > pd-prog1.c prompt>mksrc prog2.c > pd-prog2.c prompt>mksrc :PDEF prog0.c prog1.c prog2.c > pdef.c prompt>gcc -o prog.exe -O3 -I. pd-prog0.c pd-prog1.c pd-prog2.c pdef.c khpc0.c --説明の都合上、プロンプトから入力するかのように書いていますが、実際はバッチファイルかMakefileにするのがよいでしょう。 ~ -pd-test.cの実体はこんな感じです。なーんだ、と言いたくなる内容かもしれません。 #define persistent #include "test.c" void persistent_def(void *p, int size, int grpId, const char *id); void persistent_default_test_c() { persistent_def(&i, sizeof(i), 0, "i"); persistent_def(&sum, sizeof(sum), 0, "sum"); persistent_def( str, sizeof(str), 0, "str"); } -pdef.cの実体はこんな感じです。 void persistent_grp(int grpId, const char *path, const char *tmp, const char *memo); void persistent_default_test_c(); void persistent_default() { persistent_grp(0, "p-vars.pbd", "p-vars.pb_", "(local)"); persistent_default_test_c(); return; } -この persistent_default() は persistent_load(0); のタイミングで自動的に呼び出されます。 ** 関数群 -[[KHPC_v000doc01]]に準ずる。 ** メモなど * こめんと欄 #comment
テキスト整形のルールを表示する