함수 호출 전에 (공백) 사용
중복 가능:
사용하지 않은 반환 값을 무효로 만들기
목적이 무엇입니까?(void)
예를 들어 함수 호출 전에
(void)func1();
이건 단순히 전화하는 것과 같은 거라고 생각합니다.func1();
그러므로.(void)
단순히 다른 프로그래머들에게 리턴 타입이 무시될 것이라는 것을 알리기 위해 호출합니다. 예를 들어 만약func1()
의 리턴 타입을 가지고 있었습니다.int
, 또는 컴파일러가 함수에 대해 몇 가지 최적화를 수행할 수 있습니까?아마도 그 이면에는 합법적인 C++인가 아니면 어떤 레거시 코드에서 볼 수 있는 C의 잔재인가 하는 또 다른 이유가 있을 것입니다.
감사해요.
값이 쉼표 연산자의 피연산자이고 쉼표 연산자를 재정의하는 경우 무효 캐스트는 값을 억제합니다.
struct S {
int operator,(int) { return 0; }
};
std::cout << (S(), 42) << '\n'; // prints '0'
std::cout << ((void) S(), 42) << '\n'; // prints '42'
일부 기능이 "반환 값 미사용/확인 시 경고" 속성으로 선언되면 경고를 방지합니다.
Warning의 중복일 수 있습니다. warning_unused_result 속성으로 선언된 'scanf'의 반환 값을 무시합니다.
gcc 문서 확인 : http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html (http_graphics_graphics)
거의 의미가 없습니다.부작용에만 사용되고 가치가 버려지는 표현인 회피표현으로 노골적으로 선을 돌리고 있습니다.그래서 대사가.
func1();
그리고.
(void)func1();
같은 일을 할 겁니다컴파일러가 표현식의 값이 사용되지 않는다는 것을 알고 있다면 수행할 수 있는 최적화가 있을 수 있지만, 컴파일러는 명시적(공백)이 있건 없건 간에 이를 파악할 수 있을 것입니다.
이것은 프로그래머가 표현식의 값을 사용하지 않는다는 것을 분명히 하려는 문서 형태로 사용될 수 있습니다.
또 다른 이상한 용도는 알 수 없는 리턴 타입의 기능을 사용할 수 있도록 하는 것입니다.,
수열 연산자로서의 연산자. 즉,decltype( f(), g() )
테크닉, 당신이 말하고 싶은 곳"f
의 운용이 가능한()
, 힘껏g
, 그리고 이런 타입은 우리가 좋아하는 타입이 되기를 원합니다.g()
반환합니다."단, 만약f()
다음과 같은 유형을 반환합니다.operator,
오버로드되면 결과가 예상치 못하게 됩니다.
그래서 당신은decltype( void(f()), g() )
, 반환 값을 버립니다.f()
발동하기 전에operator,
, 따라서 알 수 없는 오버라이드 유형 대신 내장 시퀀스 연산자를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/13954517/use-of-void-before-a-function-call
'programing' 카테고리의 다른 글
Prisma with mariaDB: strange cache issue (0) | 2023.09.12 |
---|---|
phonegap: 쿠키 기반 인증(PHP)이 작동하지 않음 [webview] (0) | 2023.09.12 |
MariaDB UPDATE ROW_COUNT (0) | 2023.09.12 |
컴퓨터 저장소에서 인증서 삭제 (0) | 2023.09.12 |
오라클에서 sdo_geometry에서 lat and long으로 이동하는 방법 (0) | 2023.09.12 |