제 질문은 간단합니다. C++에서 다음과 같은 선언에 typedef를 연기하는 것이 합법적입니까? gcc는 문제없이 코드를 수락하지만 사용되지 않는 방법입니까? 나는 명령의 시작 부분에 매번 typedef를 가진 샘플을 발견했기 때문에 이것을 묻습니다.C++의 Typedef enum 선언
enum _mytype {
A=1,
B=2
} typedef mytype;
제 질문은 간단합니다. C++에서 다음과 같은 선언에 typedef를 연기하는 것이 합법적입니까? gcc는 문제없이 코드를 수락하지만 사용되지 않는 방법입니까? 나는 명령의 시작 부분에 매번 typedef를 가진 샘플을 발견했기 때문에 이것을 묻습니다.C++의 Typedef enum 선언
enum _mytype {
A=1,
B=2
} typedef mytype;
typedef X Y;
및
X typedef Y;
+1. 한 번 후자의 스타일을 사용하여 자신의 코드에 1-space 들여 쓰기를 사용하는 성가신 습관을 가진 동료 중 한 명에게 이미 4-space 들여 쓰기를 사용하여 코드를 수정하는 방법을 사용했습니다. – stinky472
나는 이것을 몰랐다. –
@ stinky472 : 둘 다 탭 들여 쓰기를 사용해야합니다. 공간 들여 쓰기는 성가신 습관입니다. –
는 C에서 당신은 종종
typedef enum
{
} what_ever;
을 사용하기 때문에 유형 "열거 what_ever"가 아니라 "what_ever"를 정의 할 C에서 "what_ever 열거가". 그러나 C++에서는 그렇지 않으며 이전 버전과의 호환성 때문에 C++을 작성할 때 typedef를 사용하면 안됩니다.
나는이 질문을 다시 읽어야한다고 생각한다; 네가 전혀 대답하지 않았다고 생각해. –
문법에 따라'typedef'가'decl'ion-seq -> decl'ion -> block-decl'ion -> simple-decl'ion -> decl-spec-seq - > decl-spec'), 그러나 의미론이 잘 정의되어 있는지 확신 할 수 없습니다. –
이런 종류의 typedef 규칙이 C++에서 쓸모 없다는 것을 알고 있습니까? typedef st_foo {...} foo와 같은 일을하는 유혹은 더 이상 없습니다. C++에서는 short-handing이 아니기 때문에 'struct foo'없이 'foo'를 쓸 수 있습니다. 마찬가지로 typedef와 같은 것을 필요로하지 않습니다. en_foo {...} foo; 같은 이유로. 사실 그것은 BUFB aka Expert C Programming에 따라 typedef를 사용하여 'struct'또는 'enum'을 숨기는 C 조약조차 권장하지 않습니다. – stinky472
그리고 밑줄로 시작하는 식별자를 사용하는 것은 좋은 생각이 아닙니다. –