C 의 경우 C 프로그래밍 언어 (일명 K & R) 의 첫 번째 버전에서는 전 처리기 매크로에 대한 직감이 정확하다고 제안합니다.
기호 상수 이름은 일반적으로 대문자로 작성되므로 소문자 변수 이름과 쉽게 구별 할 수 있습니다.
여러 가지면에서, 이것은 어셈블리 언어와는 별개로, 매크로는 레이블, opcode, 레지스터 이름 및 기타 모든 요소와 함께 대문자로 정의되었습니다. AT & T 스타일 어셈블리의 출현은 일부 플랫폼에서 바뀌었지만 소문자를 지원하는 터미널이 문제가되고 Unix가 내가 "소문자 운영 체제"라고 부르는 데 크게 영향을 받았다고 생각합니다.
다른 두 지점에서 .500을 타격합니다.
열거 형
제 2 판이 출판 enum
될 때, 그것들은 정의되었고, 열거 상수 로 불 렸으며 상수 섹션에서 다루었 다. 에 의해 정의 된 상수 enum
는 기호로 표시되므로 기호 상수를 사용하므로 권장되는 규칙을 따르는 경우 대문자로 이름을 지정해야합니다. (전 처리기 매크로와 마찬가지로 다른 방법으로는 아무것도하지 않습니다.)
여기에서 뒤 따르는 일부 언어와 달리 C는 enum
유형 자체가 고유 한 열거 형 값이 각 유형에 고유하며 다른 유형에서 재사용 될 수있는 1 급 클래스로 취급하지 않습니다 . 대신 #define
식별자가 첨부 된 정수 시퀀스를 생성 하는 것이 편리합니다 . 이것은 만든다
enum foo { BAR, BAZ };
enum quux { BLETCH, BAZ };
모든 기호가 범위를 공유하고 BAZ
재정의되어 유효하지 않습니다 . (이것은 전처리기에 비해 개선 된 것으로, 당시에는 하나의 #define
클로버 에 대해 경고하지 않았습니다 .) 또한 C는 모두 정수이기 때문에 혼합 여부를 신경 쓰지 않습니다.
enum foo { BAR, BAZ };
enum quux { BLETCH, BLRFL };
enum foo variable = BLETCH;
모든 경고가 설정된 최신 컴파일러에서도 완전히 유효합니다.
콘 스트
주의 : const
키워드는 1981 년 Stroustrup의 C With Classes (C ++로 발전)에서 시작되었고 결국 C에 의해 채택되었습니다. 이름의 선택은 K & R의 상수 라는 용어와 충돌하여 현재 우리가 무엇을 부를 것인지를 의미 하기 때문에 불행 합니다. 문자 (예를 들어 38
, 'x'
또는 "squabble"
). 두 번째 버전의 텍스트는이를 반영하기 위해 다시 작성되지 않았습니다.
선언 된 const
변수는 여전히 변수이므로 다른 이야기입니다. 그것들은 수정되지 않아야하지만 상수 변수의 개념이 점보 새우가 다른 토론을위한 사료보다 더 의미가 있는지 여부입니다. 어떤 경우이든 C는 표준을 변경하려고 할 때 컴파일러가 진단을 내도록 요구하기 때문에 C는 그것에 대해 진지하게 생각하지 않았습니다. 수정이 컴파일되고 실행될 경우 실제 동작은 정의되지 않습니다.
변수이기 때문에 모든 const
것이 소문자로 명명되는 규칙을 따르는 것이 합리적입니다 . 리터럴을 표현하기 위해 그것들을 사용하면 몇 가지 유형의 안전 이점이 있지만 값을 얻기 위해 컴파일 단위간에 도달 해야하는 경우 좋은 최적화를하지 못합니다.
그것들이 아닌 것은 K & R 의미에서 상수이며, 이런 이유로 그들의 식별자는 대문자가되어서는 안됩니다. 어떤 사람들은 그것들을 그런 식으로 사용하지만 몇 가지 특별한 경우를 제외하고는 내가 권장하지 않습니다.
const
식별자가 소문자와#defines
대문자로 표시 되는 것으로 보입니다 . Java는 상수 및 다른 언어에 대문자를 채택했지만 그 마지막 부분이 잘못되었을 수 있습니다. 더 많은 연구가 필요했습니다! :)