열거 형을 순차적으로 반복하는 방법은 무엇입니까? - 페이지 6

 
pavlick_ :

프로그래머 참고 사항:


이제 열거를 편집해야 하는 경우 한 곳에서 한 번에 편집합니다. 예를 들어 element_new = 56과 같이 새 요소를 추가해야 합니다.

get_enumqq_array() 함수 편집에 대해 걱정하지 마십시오. 이 기술을 X 매크로 https://en.wikipedia.org/wiki/X_Macro라고 합니다. 개발자의 요청에 따라 비슷한 방식으로 표준 열거를 쉽게 끝낼 수 있습니다.

즉시 명확하지 않을 수도 있지만 열거는 다음과 같이 나타났습니다.

엄청난! X 매크로에 대해 몰랐습니다. 감사합니다! ENUM_QQ_HELPER 정의 끝에 쉼표로 인해 오류가 없는 이유를 코드에서 이해할 수 없습니다. 열거형 또는 배열을 지정할 때 마지막 요소 뒤에 쉼표가 없어야 합니다. 그러나 컴파일러는 어떤 이유로 그것을 맹세하지 않습니다.

시험을 마친

 int a[] = { 1 , 2 ,};

꾸짖지 않습니다. 그리고 배열(열거형)의 크기가 있어야 합니다. 시원한! 버그인 것 같지만 그런 버그 기능을 더 좋게 내버려 두십시오. 실제로 그녀는 편안합니다.

 
쉼표 오류가 없는 이유

글쎄, 이것은 특히 모든 종류의 "속임수"에 대한 법적 위반입니다. 그것에 대해 걱정하지 마십시오. C/C++의 버그도 아닙니다.

추신: 초기화 주제에 대한 C ++ 표준에서:

braced-init-list:

   {initializer-list , opt }

   { }

저것들. braced-init-list 끝에 있는 쉼표는 최상위 수준에서 유효합니다.

 
pavlick_ :

저것들. braced-init-list 끝에 있는 쉼표는 최상위 수준에서 유효합니다.

감사합니다 알고 사용하겠습니다.
 
pavlick_ :

프로그래머 참고 사항:

하지만 댓글에 있는 일반 이름은 어떻습니까?

 
Комбинатор :

하지만 댓글에 있는 일반 이름은 어떻습니까?

연설이있는 열거 형의 예가 가능합니까?
 
Комбинатор :

하지만 댓글에 있는 일반 이름은 어떻습니까?

예, 댓글을 삽입할 수 없습니다. 열거형 주석에 대한 잘못된 구문입니다.

연설이있는 열거 형의 예가 가능합니까?

 enum E
{
   a = 1          // вот этот комментарий
}
 
pavlick_ :

예, 댓글을 삽입할 수 없습니다. 열거형 주석에 대한 잘못된 구문입니다.

/*...*/로 묶습니다.
 
fxsaber :
/*...*/로 묶습니다.
여기에는 전처리기가 주석(// 및 /* 모두)을 먹고 싶지 않고 매크로를 확장할 때 주석을 볼 것으로 기대하지 않는다는 말도 안되는 소리가 있습니다. 다음과 같이 전처리기의 규칙을 변경하거나 열거형을 주석 처리하는 대체 방법을 도입하십시오(스크립트가 설정에서 실행될 때 주석이 표시됨).

enum E {
   a = 1,            --**--  Комментарий_1
   b = 2            --**--  Комментарий_2
};
나는 여기에서 무력하다.
 
pavlick_ :
여기에는 전처리기가 주석(// 및 /* 모두)을 먹고 싶지 않고 매크로를 확장할 때 주석을 볼 것으로 기대하지 않는다는 말도 안되는 소리가 있습니다. 다음과 같이 전처리기의 규칙을 변경하거나 열거형을 주석 처리하는 대체 방법을 도입하십시오(스크립트가 설정에서 실행될 때 주석이 표시됨).

enum E {
   a = 1,            --**--  Комментарий_1
   b = 2            --**--  Комментарий_2
};
나는 여기에서 무력하다.
 

전처리기에 의한 처리는 여러 단계로 발생합니다. 먼저 소스에서 모든 주석이 제거되고 이 결과가 처리됩니다. 그리고 그것은 전처리기가 (매크로를 확장할 때) 주석을 만날 것으로 예상하지 않는 곳입니다. 회의는 실수로 간주됩니다. 예를 들면 다음과 같습니다.

 #define COMMENT / ## /

void OnStart ()
{
  COMMENT
}
언뜻보기에 무해한 코드는 주석을 삽입해야합니다. 그러나 컴파일되지 않습니다.