변수를 선언 할 때 부목을 어떻게 무시할 수 있습니까?변수를 선언 할 때 부목을 어떻게 무시할 수 있습니까?
나는 모든 학교에서 이 시작될 때 변수를 선언하라고 알려줍니다. 이지만 나쁜 사람이기 때문에 내가 사용하는 곳과 가까운 곳에서 물건을 선언하고 싶습니다. 좋은 예는 int i를 넣는 것입니다. for (i = 0; ...) 바로 앞에.
#include <stdio.h>
int main()
{
printf("Hello splint test\n");
int i;
for(i=5;i>0;i--)
{
printf("%2d...\n",i);
}
return 0;
}
여기
부목 가장 오래된 C 컴파일러는 내가하는 int 이동하려는의 아주 간단한 예를 들어 보자; 한 줄 위로, 또는 선언과 for 루프를 {} 넣으십시오.
이제 질문에이 검사를 어떻게 해제합니까? 하지만 다른 수표는 잘 보관 하시겠습니까?
감사 요한
주 1 : 이미 두 번째로 방어, 및 Valgrind의 오프 첫 번째 라인으로 GCC 경고 (아래 참조)를 사용합니다. 그러나 나는 나의 어리 석음 ;-) 을 제어 할 수있는 것들을 내 목록에 부목을 추가하는 방법에 대해 생각하고 있어요 그러나이 검사는 단지 성가신,
gcc에 경고 내가 사용 -Wall -W -Wextra -Wconversion - Wshadow -Wcast-qual -Wwrite-strings -Werror
참고 2 : 나쁜 동작으로 인해 발생할 수있는 잠재적 인 이식성 문제에 대해 알고 있습니다. 하지만 가독성이 높아지고 있습니다. 선언에서이 유형을 검색하기 위해 위아래로 이동할 필요가 없습니다 (다른 스레드에서 논의 할 수 있음).
업데이트 : 조금 더 정보를, 나는라는 파일 main.c.에 위의 코드를 넣어 사용 플랫폼은 우분투 8.04이며, 편집기, 으로 GVIM 내가 그것을 실행할 때이 부목의 출력입니다 :
splint +gnuextensions main.c
Splint 3.1.1 --- 03 Nov 2006
Command Line: Setting +gnuextensions redundant with current value
main.c:8:8: Parse Error. (For help on parse errors, see splint -help
parseerrors.)
을 그리고 이것은 내가 전에 생각하지 않았다 2 개 더 많은 질문을 엽니 다.
"현재 값으로 중복", 현재 값은 무엇입니까?
왜 구문 분석 오류가 아니며 경고가 아닙니다.
업데이트 :이 문제를 지원하는 패치 부목에있는 posibility가있다 이 내가이 시도하지 않은 아직하지만 난 그게 해결책이라고 생각합니다.뭔가 억제 할 수있는 경우
여기에있는 동안 for 문 안에 int를 선언해야합니다. – starblue
성가신 경고 또는 파서 오류가 발생합니까? –
그리고 splint를 부수는 "int"와 "i"사이의 공간입니까? – Johan