2011-09-23 3 views
5

저는 PC Lint를 처음 사용하고 있습니다. PC Lint에서 내 while(TRUE)에 대해 경고 할 때 필자는 코드를 "linting"했습니다.PC Lint 동안 (TRUE) vs (;;)

이 그것을 말씀입니다 :

716 : 동안 (1) ... - (1) ... 발견하면서 형태의 구조.

부울을 예상하는 컨텍스트에서 상수를 나타내는 반면에 무한 루프가 이 접두어가되는 프로그래밍 정책을 반영 할 수 있습니다. 따라서 별도의 번호가 부여되고 이 정보 용 범주에 포함되었습니다. 더 일반적 인 무한 루프 접두어의 형태 인 은 (;;)에 대한 것입니다.

이 진술을 이해하지 못했습니다. 누구든지 나를 이해하도록 도와 줄 수 있습니까?

+2

'while (TRUE)'는'TRUE '를'0 '으로 설정하면'for (;;) '를 사용하는 방법이 없지만 무한 루프가 아닐 수도 있습니다. –

+2

@ Dan D., 확실하게 - 우리는 전처리기에 대해 이야기하고 있습니다. '#define for (;;) if (0)'은 어떻습니까? ;-) –

+1

나는 그것이 무엇에 관해 이야기하는지 안다. 그러나 그것은 내가 말해야하는 이상한 설명이다. –

답변

5

텍스트 (while(1)으로 사전 처리됩니다) while(TRUE)이 완벽하게 유효한 무한 루프가 있지만 그것은에 어떤 값을 사용하지 않기 때문에, 무한 루프를 작성하는 더 전통적인 형태

for(;;) 
{ 
    ... 
} 

것을 말한다 따라서 오류가 발생하기 쉽습니다.

3

더 일반적인 무한 루프는 for(;;)이며 논증할만한 주장이라고 말하면서이 구조를 "정보 카테고리"로 분류했습니다. - 만약 내가 for(;;)을 사용했다면 가버 리다. 나는 항상 while(1)이라고 쓰고 절대로 for(;;)이라고 쓰고있다. 만약 당신이 기대하는대로, 나는이 PC LINT의 결과를 무시하거나 누군가 TRUE을 다시 정의 할 것을 염려한다면 누군가가 TRUE 루프가 전혀 실행되지 않을 것이기 때문에 전환하십시오.

+6

그리고 어쨌든 누군가가 'TRUE'를 재정의하면 실제 루프가 무한히 돌아 가지 않는다는 것이 가장 이상한 일이 아닐 수 있습니다 :) –