2

확인, 거기는 이러한 선언 후유형의 순수 이름 등가 내가 프로그래밍 언어의 개념에 대해 라비 세티의 책을 읽고 있어요

int *i1; 
int *i2; 

을 말한다는 I1의 유형과 I2는 호환 형의 이름을 수 없습니다. 에서 이름 유형 호환성을 사용하는 언어에서 변수 i1과 i2는 서로 비교되거나 할당 된 일 수 없습니다.

이름이 호환되지 않는 이유가 궁금합니다. 그것들은 같은 이름 유형을가집니다 : int. 누군가 이것을 설명하고 유효한 순수한 이름 등가성의 예를들 수 있습니까? 감사합니다.

+5

C++의 맥락에서, 나는 이것이 어떤 의미가 있다고 생각하지 않는다 ... –

+0

이것은 책의 발췌일까요? http://users.dickinson.edu/~wahlst/356/ch5.pdf – JBentley

+0

@JBentley 예, 예제가 있습니다 –

답변

2

어느 누구도 유형이 int이 아닙니다. 둘 다 int에 대한 포인터로 입력됩니다. Sethi의 요점은 (단지) 이름 동등성을 사용하는 가설적인 언어에서이 두 포인터가 int 유형 표현식이 호환되지 않는 두 가지 유형을 작성한다는 것입니다. 동일한 두 가지 동일 용도 (new)를 사용하는 것과 같습니다.

이름 동등한 언어에서 유형 표현식에 한 번 이상 type-compatibly 사용하려면 이름을 입력해야합니다. C++ 구문에서, 그 typedef를 사용하여 필요 :

typedef int *intp; 
intp i1; 
intp i2; 

이제 i1i2 이름 호환 유형이있다.

관련 문제