我想在c
/ c++
中找到一个宏,它将struct typedef
和一个指向struct的指针作为输入,并打印出所有内容:
假设我有一个名为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
}
我的想法是在内核中使用dir
python函数
Write a Macro to stringify the contents of a struct
Your most general C macro for printing variable values in different types
答案 0 :(得分:2)
您可以使用print_hex_dump或print_hex_dump_bytes
示例:
struct mystruct *p;
print_hex_dump_bytes("mystruct: ", DUMP_PREFIX_ADDRESS, p, sizeof(*p));
答案 1 :(得分:1)
您可能需要查看kernel trace event API。它比简单的printk
稍微复杂一点,但它可以动态切换并进行一些prett(-ier)打印。而且开销很低。