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 语言中的宏:

PRINT_STRUCT_CONTENT(struct_type, pointer)

并打印以下内容:

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

dir这个想法是在内核中有一种python函数


编写一个宏来对结构的内容进行字符串化

您最通用的 C 宏,用于打印不同类型的变量值

是否有用于打印结构的 C 预处理器宏?

在 C 预处理器中编写一个 while 循环

4

2 回答 2

3

您可以使用print_hex_dumpprint_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。它比 simple 稍微复杂一些printk,但它可以动态切换并进行一些 prett(-ier) 打印。而且开销仍然很低。

于 2013-01-31T11:06:56.780 回答