2014-12-15 2 views
-2

내 질문에는 중요하지 않기 때문에 코드를 포함시키지 않았지만, if (g_sound == 1){printf("\a");}과 같은 문구 (물론 짧은 예제 만 사용하고 있습니다)를 사용하면 어떻게이 코드를 사용할 수 있습니까? 너무 반복성이없는 동안 내 프로그램? 거기에 링크 할 수있는 변수의 유형이 있습니까? 그리고 그 변수에 코드가 실행되어 있습니까? 그래서 내 코드의 절반이 반복해서 똑같은 것이 아닙니다 ... 모든 도움을 많이 받으실 수 있습니다! 업데이트 : 유용한 의견을 보내 주셔서 감사합니다. 함수를 사용하는 것이 실행해야하는 20 줄 코드이므로 가장 최적이라고 생각했습니다! 다시 한번 감사합니다! 문 정말 간단 경우C에서 반복 감소시키기

+5

그게 기능입니다. – tzaman

+2

그리고 전 처리기 매크로. –

+0

거의 고려하지 않고 있지만 함수 호출에 약간의 오버 헤드가 추가된다는 사실을 알고 있어야합니다. 매크로 호출은 전처리 기가 그대로 매크로로 대체됩니다. 목표는 항상 가독성과 유지 보수성이 있어야합니다. tzaman과 Lee는 귀하의 옵션을 커버하므로 구현에 가장 적합한 결과를 찾기 위해 필요에 맞게 균형을 맞추기 만하면됩니다. 매크로 작성을 처음 사용하는 경우 미묘한 뉘앙스가 있으므로 해당 경로로 이동하면 통증이 없어 질 수 있습니다. –

답변

1

(또는 적어도 최적) 다음 매크로 사용 : 다음 매크로는 다음과 같이 사용된다

#define THIS_IS_NOT_A_FUNCTION(X) if (x == 1){ printf ("\a");} 

을 :

// do some tedious task that I can't be bother typing out fully: 
THIS_IS_NOT_A_FUNCTION(g_sound); 

데이비드 C. 순위가 지적 그의 코멘트에서, 매크로는 정의 된 값 사전 컴파일 시간으로 확장되므로 함수를 호출하는 오버 헤드가 없습니다. 단점은 매크로가 너무 자유롭게 사용되면 코드가 읽을 수 없게 될 수 있다는 것입니다.

복잡한 연산 인 경우 함수를 작성하고 호출하는 데 비용이 부과 될 수 있습니다.

관련 문제