>백엔드 개발 >C++ >`widget w(gadget(), doodad());`는 C의 변수 선언입니까?

`widget w(gadget(), doodad());`는 C의 변수 선언입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-19 07:53:02911검색

Is `widget w(gadget(), doodad());` a Variable Declaration in C  ?

C의 가장 짜증나는 구문 분석이 해결됨

다음과 같은 코드에서 문제가 발생합니다.

widget w(gadget(), doodad());  // Pitfall: Not a Variable Declaration

One 이 코드가 위젯 유형의 w라는 변수를 선언한다고 가정할 수 있습니다. 그러나 이는 사실이 아닙니다.

C에서 배열 유형의 인수는 첫 번째 요소에 대한 포인터로 붕괴되고, function 유형의 인수는 함수 포인터로 붕괴됩니다. 즉, 선언되는 함수의 서명은 다음과 같습니다.

widget w(gadget(*)(), doodad(*)());

이 함수는 두 개의 인수를 사용합니다. 하나는 인수를 사용하지 않고 가젯을 반환하는 함수에 대한 포인터이고 다른 하나는 함수에 대한 포인터입니다. 인수를 사용하지 않고 장식물을 반환합니다. 함수 자체는 위젯을 반환합니다.

다음과 같이 함수 인수에 추가 괄호를 추가하면 더욱 혼란스러운 경우가 발생합니다.

widget w(gadget(x));

이것은 x라는 변수를 선언해야 하는 것처럼 보입니다. 가젯 유형이지만 실제로는 가젯 유형의 x라는 첫 번째 인수를 취하고 위젯을 반환하는 함수를 선언합니다.

위 내용은 `widget w(gadget(), doodad());`는 C의 변수 선언입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.