1

構造体と構造体へのポインタを入力として取得し、そのすべての内容を次のように出力するマクロをc/で見つけたいと思います。c++typedef

という名前の構造体があるとしましょうstruct account

struct account {
   int account_number;
   char *first_name;
   char *last_name;
   float balance;
};

そして、私はそれを次のように使用します:

struct account my_account= {    
    .account_number = 321321,
    .first_name = 0x12345678,
    .last_name = 0,
    .balance = 222 };

Linux kernel/c lanaguge に次のようなマクロが必要です。

PRINT_STRUCT_CONTENT(struct_type, pointer)

そして次を印刷します:

my_account= {
account_number = 321321,
first_name = 0x12345678,
last_name = 0,
balance = 222
}

アイデアは、カーネルに一種のdirpython関数を持たせることです


構造体の内容を文字列化するマクロを書く

さまざまな型の変数値を出力するための最も一般的な C マクロ

構造体を出力する C プリプロセッサ マクロはありますか?

C プリプロセッサで while ループを記述する

4

2 に答える 2

3

print_hex_dumpまたはprint_hex_dump_bytesを使用できます
例:

struct mystruct *p;
print_hex_dump_bytes("mystruct: ", DUMP_PREFIX_ADDRESS, p, sizeof(*p));
于 2013-01-29T02:26:35.147 に答える
1

カーネル トレース イベントAPIを参照してください。これは単純な よりも少し複雑ですが、printk動的に切り替え可能で、prett(-ier) 印刷を行います。それでも非常に低いオーバーヘッドです。

于 2013-01-31T11:06:56.780 に答える