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 중국어 웹사이트의 기타 관련 기사를 참조하세요!