GCC에서 "정의되었지만 사용되지 않음"경고를 숨기려면 어떻게해야합니까?
다음과 같은 컴파일 시간이 많이 있습니다.
CASSERT(isTrue) or CASSERT2(isTrue, prefix_)
GCC로 컴파일 할 때 'prefix_LineNumber' defined but not used
. 컴파일 타임 어설 션에 대한 경고를 숨길 수있는 방법이 있습니까? GCC 문서를 검색하는 데는 운이 없었습니다. 동일한 매크로 내에서 전역 적으로 var가 자동으로 사용 될 수 있다고 생각했지만 할 방법을 생각할 수 없었습니다.
GCC에서 경고를 숨기는 방법을 아는 사람이 있습니까?
이 문제에 대한 해결책을 찾는 동안이 스레드를 보았습니다. 내가 찾은 솔루션의 완전성을 위해 여기에 게시합니다 ...
사용되지 않는 경고 를 제어하는 GCC 컴파일러 플래그 는 다음과 같습니다.
-Wunused-function
-Wunused-label
-Wunused-parameter
-Wunused-value
-Wunused-variable
-Wunused (=all of the above)
이들 각각에는 경고를 끄는 W 뒤에 "no-"가 삽입 된 해당 부정 형식이 있습니다 (예 : -Wall에 의해 켜진 경우). 따라서 귀하의 경우에는
-Wno-unused-function
물론 이것은 컴파일 타임 어설 션뿐만 아니라 전체 코드에 대해 작동합니다. 함수 별 동작에 대해서는 함수 속성을 참조하십시오 .
다른 컴파일러와 충돌을 일으키지 않는 GCC 솔루션
#ifdef __GNUC__
#define VARIABLE_IS_NOT_USED __attribute__ ((unused))
#else
#define VARIABLE_IS_NOT_USED
#endif
int VARIABLE_IS_NOT_USED your_variable;
null 문을 만들고 결과를 void로 캐스팅 할 수 있습니다. 이것은 컴파일러간에 이식 가능하며 gcc는 사용 -Wall
및 -Wextra
사용 설정을 하더라도 경고를 표시하지 않습니다 . 예를 들면 :
int var; // var is not used
(void)var; // null statement, cast to void -- suppresses warning
일반적인 기술은 이에 대한 매크로를 만드는 것입니다.
#define UNUSED(x) ((void)(x))
int var;
UNUSED(var);
이것은 죽은 코드를 확인하는 것이 (때때로) 유용 할 수 있다는 것을 이해하지 못하지만 가장 성가신 경고 중 하나입니다. 하지만 저는 보통 디버깅을위한 정적 함수 나 미래에 유용 할 수도 있고 일시적으로 만 사용되는 함수를 가지고 있으며 코드에 유지하고 싶습니다.
다행스럽게도이 경고는 인라인 함수와 관련이 없습니다.
inline static foo()
{
}
#define UNUSED_VAR __attribute__ ((unused))
모든 변수의 경우 유형 앞에 위의 매크로를 사용하십시오. 예를 들면 다음과 같습니다.
UNUSED_VAR int a = 2;
정적 assert 매크로의 세부 사항을 모르면 대답하기가 어렵습니다. 이 문제를 피하기 위해 다른 매크로로 변경할 수 있습니까? 제안 된대로 매크로에 'unused'속성을 추가하거나 다른 형식의 CASSERT ()를 사용할 수 있습니다.
다음은 몇 가지 대안에 대한 설명입니다.
http://www.jaggersoft.com/pubs/CVu11_3.html
http://blog.kowalczyk.info/kb/compile-time-asserts-in-c.html
http://www.pixelbeat.org/programming/gcc/static_assert.html
How about -Wunused-label
?
Wrap this functions by the following directives All the code that will be placed between push and pop will not warn you about unused functions. All the rest of the code (outside push and pop) will not be affected.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
... your code
#pragma GCC diagnostic pop
참고URL : https://stackoverflow.com/questions/386220/how-can-i-hide-defined-but-not-used-warnings-in-gcc
'Program Tip' 카테고리의 다른 글
SearchView의 지우기 버튼 클릭을 어떻게 캡처합니까? (0) | 2020.12.02 |
---|---|
해결 실패 : com.android.support.design:25.4.0 (0) | 2020.12.02 |
열린 'fancybox'내에서 함수에서 멋진 상자를 닫습니다. (0) | 2020.12.02 |
입력 위에 레이블이있는 스타일링 양식 (0) | 2020.12.01 |
SQLAlchemy를 사용하여 SQL보기를 만드는 방법은 무엇입니까? (0) | 2020.12.01 |