C++에서 컴파일 타임 "순도"검사를 지정할 수 있습니까?C++ 컴파일시 순도 체크?
즉 :
this function does not read from anything other than it's arguments
this function does not write to anything; it only returns the return value
C++에서 컴파일 타임 "순도"검사를 지정할 수 있습니까?C++ 컴파일시 순도 체크?
즉 :
this function does not read from anything other than it's arguments
this function does not write to anything; it only returns the return value
const-correctness 높은 컴파일러 경고 수준은 당신이 요구하는 무엇을 많이해야한다. 또한 컴파일러에 대한 C++의 매우 엄격한 현대 방언을 지정합니다 (타사 라이브러리를 사용하고 코드를 준수하지 않을 때 성가 시게 할 수 있음)
그렇지 않으면 과다한 정적 분석 도구, 오픈 소스, Coverity, Parasoft C++ Test 등과 같은 비싼 도구가 있습니다. .
C++의 매우 엄격한 현대 방언을 어떻게 지정합니까? g ++/clang이 이것을 지원합니까? – anon
이 작업을 수행 할 휴대용 방법이 없지만, GCC 구현 function attributes 당신이 체크 아웃해야 두 특정 속성에 관심이 무엇인지에 근접 할 수 없습니다 :
순수 - 많은 기능이 더이 반환 값과 반환 값을 제외한 결과는 매개 변수 및/또는 전역 변수에만 의존합니다. 이러한 함수는 산술 연산자처럼 일반적인 하위 식 제거 및 루프 최적화의 적용을받을 수 있습니다. 이 함수는 pure 속성으로 선언해야합니다.
과 :
CONST는 - 많은 함수는 인수를 제외한 모든 값을 검사하고, 반환 값을 제외하고 영향을하지 않습니다. 기본적으로 함수는 전역 메모리를 읽을 수 없으므로 아래의 pure 속성보다 약간 엄격한 클래스입니다.
당신은 프로토 타입의 일부로서 속성을 지정
int square (int x) __attribute__ ((const));
int square (int x)
{
return x * x;
}
을 왜 당신이 그런 짓을 할 수 있습니까? AFAIK 당신은 할 수 없습니다. – AraK
C++ 컴파일러가 믿을 수 없을만큼의 정적 분석을 수행하지 않고 모든 라이브러리 코드를 분석하는 것은 아닙니다. 그래서 아니야. –
커버 리티와 같은 도구가 필요합니다 – pm100