0

我的 C 程序中有以下代码行。

sprintf(cmd, "test mergesort %n %x %x %?", A, n, x, my_cmp);

my_cmp是类型Compare_fn,我需要知道如何将它传递给这个函数。此行用于帮助执行测试所需的命令。

如果有人知道如何将类型变量传递给Compare_fn此函数,那将非常有帮助。

我根本不想用 my_cmp 打印任何东西。我有一个以 Compare_fn 变量作为参数的函数,并且只是在 shell 中执行该函数。

4

1 回答 1

2

ISO C 没有定义从函数指针类型void *到. 如果您不想依赖于此,您可以使用 C 中的所有类型都必须具有表示为 的覆盖数组的事实:void *%punsigned char

Compare_fn fp;
unsigned char rep[sizeof fp];
memcpy(rep, &fp, sizeof rep);
for (i=0; i<sizeof rep; i++) printf("%.2x", rep[i]);

显然,如果您愿意,可以使用snprintf或您自己的字节到十六进制代码将十六进制输出存储到字符串而不是标准输出。

于 2012-08-15T02:36:16.017 回答