-4

一位朋友告诉我有一种方法可以在printf 修改原始void功能的情况下进行检查。

但我看不出你怎么能做到。

#include<stdio.h>

void test()
{
  int a = 1;
  int b = a;
}

main()
{
    printf("%d",test());    
}

我不断得到

错误:无效表达式的使用无效

有没有办法做到这一点?

4

2 回答 2

7

我从您的编辑中看到您希望在不修改功能的情况下执行此操作。您可以使用逗号运算符在 a 中进行函数调用printf

#include <stdio.h>

void test()
{
    int a = 1;
    int b = a;
}

main()
{
    printf("%d\n", (test(), 0));

    // or even this, to be more explicit:
    printf("%s\n", (test(), "test() was called."));
}

逗号运算符计算第一个操作数 - 在这种情况下是您的函数调用 - 并丢弃结果,然后计算第二个操作数,结果是整个表达式的结果。

于 2012-09-11T18:07:37.077 回答
0

一个例子是将内存指针传递给 void 函数并用您需要的数据填充它,以查看您的 void 函数是否有效。

void
test_funtion(bool *answer)
{
    answer = false;
    // do stuff
    if(error happens)
        return;
    answer = true;
    return;
}

我不明白您将如何使用 printf 让程序知道。只有这样,您才能使用 printf 为自己而非机器进行可视化日志记录。

于 2012-09-11T18:10:30.097 回答