당신이 *declarator*s in §8/4
에 대한 문법을 보면 당신은 noptr-declarator
이 (ptr-declarator
)로 기록 될 수 있다는 것을 알 수 있습니다, 그게이 사람처럼 선언의 유효성을 검사 (declarator-id
)로 기록 될 수있다 제목. 사실을 말하자면,이 코드는 문제없이 컴파일 :int (x)와 같은 선언의 목적은 무엇입니까? 또는 int (x) = 10;
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
그러나 (함수 배열 또는까지) 포인터가 선언에 포함되지 않은 경우 이러한 괄호을 허용하는 목적은 무엇인가?
아마도이를 금지하려면 더 복잡한 문법이 필요하기 때문입니다. –
설명이 될 수 있습니다. 나는 이것에 대해 생각하지 않았다. – Mao
마찬가지로, 괄호가 불필요한 경우에도'(42)'는 유효한 표현식입니다. –