2012-09-11 3 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

수정 한 내용에서 기능을 수정하지 않고이 작업을 수행하고 싶습니다. 다음 두 번째 피연산자하고 결과를 평가하고, 그 결과를 폐기 -이 경우에 대비하여 함수 호출을 -

#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.")); 
} 

쉼표 연산자는 첫 번째 피연산자를 평가한다 : 당신은 printf에서 함수 호출을 만들기 위해 쉼표 연산자를 사용할 수있다 전체 표현의 결과입니다.

+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를 사용하지만 컴퓨터는 사용하지 않는 것이 좋습니다.

관련 문제