いきちがいのぷろぐらむあ
PG雑記/assert系マクロ関係のメモ
の編集・凍結
(
https://www.6809.net/tenk/?PG%e9%9b%91%e8%a8%98%2fassert%e7%b3%bb%e3%83%9e%e3%82%af%e3%83%ad%e9%96%a2%e4%bf%82%e3%81%ae%e3%83%a1%e3%83%a2%09%e3%81%ae%e7%b7%a8%e9%9b%86%e3%83%bb%e5%87%8d%e7%b5%90
)
[
トップ
] [
一覧
|
検索
|
最終更新
]
□
[
readme
] [
雑記
] [
PROG
] [
倉庫
]
ページを凍結するにはパスワードが必要です。
B
I
U
D
H
[[]]
<br>
--
管理者パスワード:
-- 雛形とするページ --
#RecentChanges
C言語機能の比較
C言語機能テスト結果1
C言語機能テスト結果2
C言語機能テスト結果3
FrontPage
GNU General Public License
GNU 一般公衆利用許諾書 (GNU General Public License)
HeaderMenu
InterWikiName
InterWikiSandBox
MenuBar
PG雑記
PG雑記/Cコンパイラ・オプション・メモ
PG雑記/SubMenu
PG雑記/Uncrustifyのオプション
PG雑記/assert系マクロ関係のメモ
PG雑記/pyukiwikiメモ
PG雑記/pyukiwikiメモ/2006-02-19
PG雑記/pyukiwikiメモ/2006-02-20
PG雑記/pyukiwikiメモ/2006-02-21
PG雑記/pyukiwikiメモ/2006-02-22
PG雑記/pyukiwikiメモ/2006-02-23
PG雑記/pyukiwikiメモ/2006-02-24
PG雑記/pyukiwikiメモ/2006-02-25
PG雑記/pyukiwikiメモ/2006-02-26
PG雑記/pyukiwikiメモ/2006-03-16
PG雑記/pyukiwikiメモ/2006-03-17
PG雑記/pyukiwikiメモ/2006-03-18
PG雑記/pyukiwikiメモ/2006-03-19
PG雑記/pyukiwikiメモ/2006-03-22
PG雑記/pyukiwikiメモ/SubMenu
SandBox
SubMenu
The "Artistic License"
The Artistic License 日本語訳 1.0
cl_test_src
lcc メモ
readme
ruig
test
サブルーチン
ヘルプ
倉庫
倉庫/C関係
倉庫/SubMenu
倉庫/hidemaru
倉庫/pyukiwiki
倉庫/グラフィック関係
倉庫/一般
倉庫/開発
掲示板
整形ルール
雑記
雑記/2005
雑記/2005-06-12
雑記/2005-06-19
雑記/2006
雑記/2006-02-08
雑記/2006-02-11
雑記/2006-02-12
雑記/2006-02-13
雑記/2006-02-26
雑記/2006-03-12
雑記/2006-03-13
雑記/2006-03-20
雑記/2006-03-21
雑記/2006-03-30
雑記/2006-11-05
雑記/2006-11-06
雑記/2006-11-11
雑記/2007
雑記/2007-04-28
雑記/2007-08-26
雑記/2008
雑記/2008-01-01
雑記/2008-05-24
雑記/2008-10-01
雑記/2008-10-02
雑記/2008-10-03
雑記/2008-10-04
雑記/2008-10-05
雑記/2008-10-11
雑記/2008-11-03
雑記/2008-11-04
雑記/2009
雑記/2009-11-02
雑記/2009-11-20
雑記/2009-11-23
雑記/2009-11-26
雑記/2009-12-02
雑記/2009-12-04
雑記/2009-12-09
雑記/2009-12-10
雑記/2009-12-12
雑記/2009-12-15
雑記/2009-12-17
雑記/2009-12-18
雑記/2009-12-20
雑記/2009-12-24
雑記/2010
雑記/2010-01-11
雑記/2010-01-26
雑記/2010-02-04
雑記/2010-02-05
雑記/2010-02-13
雑記/2010-03-09
雑記/2010-03-12
雑記/2010-03-13
雑記/2010-03-14
雑記/2010-03-15
雑記/2010-03-20
雑記/2010-03-21
雑記/2011
雑記/2011-01-01
雑記/2011-01-06
雑記/2011-11-11
雑記/2012
雑記/2012-02-29
雑記/2012-06-03
雑記/2012-10-27
雑記/2012-12-12
雑記/2012-12-14
雑記/2013
雑記/2013-05-19
雑記/2013-05-20
雑記/2013-05-21
雑記/2013-05-26
雑記/2013-06-16
雑記/2013-09-22
雑記/2014
雑記/2014-06-20
雑記/2014-10-12
雑記/2014-10-13
雑記/2014-11-02
雑記/2014-12-14
雑記/2014-12-21
雑記/2014-12-28
雑記/2015
雑記/2015-01-01
雑記/2015-02-07
雑記/2015-04-20
雑記/2015-04-29
雑記/2015-07-05
雑記/2015-07-18
雑記/2015-08-13
雑記/2015-08-14
雑記/2015-08-15
雑記/2016
雑記/2016-02-28
雑記/2016-03-27
雑記/2016-08-03
雑記/2016-09-03
雑記/2016-11-19
雑記/2017
雑記/SubMenu
*** 下準備 2 : printf系 ERR_PUTS(s) 1行出力だけでは通常の利用で面倒なのでprintf形式も用意する.~ (c/c++共用のため. ただc++専用でも、なるべくデバッグ処理側でmalloc,new系を使われたくないので、stream系よりもprintfをまず使えるようにする) その準備として、まず、vsnprintfの辻褄あわせマクロを用意.(名前が微妙に違ったり、vsnprintfが無かったり) #define ERR_VSNPRINTF(b,l,f,a) vsnprintf(b,l,f,a) // 普通 #define ERR_VSNPRINTF(b,l,f,a) _vsnprintf(b,l,f,a) // win系 #define ERR_VSNPRINTF(b,l,f,a) vsprintf(b,f,a) // snprintfがない場合 とりあえずヘッダのみの利用を想定して、実処理を inline で記述(inline 自体が c だと__inline だったりするかもしれないが). static inline int err_printf(const char* fmt, ...) { char buf[1030]; va_list arg; va_start(arg,fmt); ERR_VSNPRINTF(buf, (sizeof buf), fmt, arg); va_end(arg); buf[(sizeof buf)-1] = '\0'; ERR_PUTS(buf); return 1; } 固定バッファだが、プログラム内部のデバッグメッセージ用なので、さして不都合はないとする. がバッファ溢れは怖いので、可能な限り vsnprintf系を使う.~ (追記: vcのvsnprintfはあふれた時最後に \0 を書き込んでくれない模様……ので、最後の位置に'\0'を置いてガード) これを使ったマクロを用意. やり方は古いC(プリプロセッサ)で出来る方法と、C99以降の可変マクロを用いる方法がありえる. 古い Cでも使える方法は #define ERR_PRINTF(x) err_printf x として、使うときは ERR_PRINTF(("error : %s\n", msg)); のように 二重括弧で記述する.~ C/C++の一般的な書き方でないので、初見は気持ち悪いかも知れず、 また、C/C++に慣れていない人には嫌がられるかもしれないが、 デバッグ専用処理と納得できれば、むしろ見た目で判別しやすいので メリットとも考えられる.(個人的には見目を優先してこちらが好み) 可変引数マクロを使った場合は、 #define ERR_PRINTF(...) err_printf(__VA_ARGS__) で、ERR_PRINTF("error : %s\n", msg); といったところ. ~ ※ 標準エラー出力やターゲット環境用に回りくどいことしているが、エラー出力が標準出力で問題なければ #define ERR_PRINTF(x) printf x や #define ERR_PRINTF printf とするのがてっとりばやいだろう。(ターゲット環境によっては開発用ログ出力関数が printf の場合もあるし) ~ ※ printf系は普通に使う分にはmalloc系が使われることは無いように思われるが、全くないかというとそうではなく、実装次第の話で、数$による順番変更や、やたら桁数が多い浮動小数点数の%f表示があると、使われるかもしれない. (ので表示の質的に問題なければ %f より %g のほうが無難かも) ~
凍結する
凍結しない
タイムスタンプを更新
テキスト整形のルールを表示する
[
凍結
|
差分
|
添付
|
リロード
] [
新規
|
ヘルプ
]
Last-modified: 2013-06-16(日)