2012-09-11 43 views
-4

一位朋友告訴我有一種方法可以檢查printf沒有修改原來的void函數。如何檢查一個void函數是否可以成功運行printf?

但我看不出你是如何做到的。

#include<stdio.h> 

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

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

我一直得到

error: invalid use of void expression

有沒有辦法做到這一點?

+0

你的代碼在哪裏? –

+0

你使用C++還是C?如果你使用C++,那麼你不應該使用printf。使用std :: cout。 – Caesar

+1

你不能只將函數調用放入printf中。你必須定義你的成功條件,在函數中檢查它,並適當地printf。編程!=魔術。 – Dan

回答

8

我從您的編輯中看到,您希望在不修改該功能的情況下執行此操作。您可以使用逗號運算符,使在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.")); 
} 

逗號運算符的第一個操作數 - 在這種情況下,你的函數調用 - 然後丟棄結果,然後計算第二個操作數和結果是整個表達的結果。

+0

+1。這絕對是他朋友的意思。 – Nawaz

+0

確實沒有任何其他神奇的方式來檢查它,而不改變void函數本身? –

+0

@ pb2q它花了我6代表:/但謝謝你的回覆! –

0

一個例子是將內存指針傳遞給void函數,並用數據填充它,以查看void函數是否工作。

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

我看不出如何使用printf讓程序知道。 唯一的辦法就是使用printf來爲自己做視覺記錄,而不是機器。

相關問題