C ++ 03의 식별자에는 달러 기호가 허용됩니까? 는 C ++ 03에서 식별자의 달러 기호가 허용되지 않음을 다룹니다. GCC는이를 C 확장 으로 제공하며 C ++ 03 모드에서 진단. 그러나 C ++ 11에서는
int $ = 0
경고없이 컴파일됩니다.
이 답변 이유
$
구현 정의 식별자에는 진단이 필요하지 않기 때문에 허용 될 수 있습니다 :
The answer here is"Maybe": According to§2.11, identifiers may consist ofdigitsandidentifier-nondigits, starting with one of the latter.identifier-nondigitsare the usual
a-z
A-Z
과 밑줄, C ++ 11부터 유니버설 문자 이름(예 :\uBEAF
\UC0FFEE32
),및 기타 구현 정의 문자. 그래서 그것은 구현 정의입니다$
를 사용하는 경우 식별자로 허용됩니다. VC10 이상은 이전 버전 일 수도 있습니다. 심지어 같은 식별자를 지원합니다こんばんわ
.하지만 :사용하지 않습니다. 가능한 한 읽기 쉽고 이식 가능한 식별자를 만드십시오.
$
구현이 정의되었으므로 휴대용.
이 언어는 C ++ 03 표준에도 존재하므로이 언어가 매우 설득력있는 주장이라고 생각하지 않습니다.
§2.10/2
In addition, some identifiers are reserved for use by C ++ implementations and standard libraries (17.6.4.3.2) and shall not be used otherwise; no diagnostic is required.
$
가 허용하는 표준의 변화
식별자 이름으로 사용 하시겠습니까?
- 답변 # 1
- 답변 # 2
그렇지 않다. 달러 기호는 ASCII 0x24이며 표준의 부록 E.1 (charname.allowed)에 정의 된 범위 내에 있지 않습니다. 숫자도 아니고 숫자도 아니기 때문에 구현 정의 문자 여야합니다. 따라서 이것이 휴대용 C ++ 11이 아니라는 것에 동의합니다. 또한 식별자는 범용 문자로 시작해서는 안되며 식별자는 구현에서 허용하는 문자로 시작할 수 있습니다.
관련 자료
- Javascript MathJax 텍스트 문자열에서 여러 달러 ($) 기호를 파운드 기호로 바꾸는 방법은 무엇입니까?
- cURL: Makefile 내에서 2달러 기호를 이스케이프 처리하는 방법은 무엇입니까?
- escaping - 젠킨스에서 powershell로 - 전달 된 매개 변수에서 달러 기호를 이스케이프해야합니까?
- strip - 파이썬의 목록에서 달러 기호 '$'를 어떻게 제거 할 수 있습니까?
- Visual Studio Code의 코드 조각에서 달러 기호를 추가하는 방법은 무엇입니까?
- python - 달러 기호가있는 숫자를 어떻게 계산할 수 있습니까?
- trying to format my printf to line up the dollar signs and cents - 달러 기호와 센트를 정렬하기 위해 printf를 포맷하려고합니다c 소스
- latex - 수학 구분 기호에 달러 기호를 사용하도록 MathJax로 Sphinx를 구성하는 방법
- excel - 달러 기호가없는 VBA 문자열
- javascript - 파이썬에서 언 바운드 식별자를 사전 키로 사용할 수없는 이유는 무엇입니까?
- SQL Server에서 달러 기호 및 쉼표를 제거하기 위해 값의 형식을 다시 지정
- php - preg_match에서 공백을 허용하고 단어를 허용하지 않으며 잘못된 부호를 허용하지 않습니다
- C++ 보기 유형: const&또는 값으로 전달?
- c++ : '(단순히) 이전에 발생'과 비교하여 '전에 강력하게 발생'의 의미는 무엇입니까?
- c++ : 템플릿 매개변수 그룹을 정의하고 조건부로 전문화할 수 있습니까?
- c++ : spdlog로 플레이하는 방법?
- C++ 중첩 컨테이너 및 개체의 메모리 해제
- c++ : clang 대 gcc -템플릿 매개변수에서 파생된 구조체의 CTAD
- C++ : Code::Blocks, MinGW 및 C++11과 함께 Google Mock을 사용한 단위 테스트
- C++ 댕글링 참조 이상한 동작
- c++ : 두 벡터를 하나로 병합하기
- c++ : 널 포인터 인수와 불가능한 사후 조건을 사용하여 표준 예외 구성
이것은 구현 정의 동작입니다.
<올>$
식별자 문법에는 포함되지 않습니다.C ++ 11의 식별자 이름 규칙은 다음과 같습니다.숫자로 시작할 수 없습니다
문자, 숫자, 밑줄, 범용 문자 이름 및구현 정의문자
로 구성 가능키워드가 될 수 없음
구현 정의 문자는 허용되며 gcc,
문법은 C ++ 표준 섹션clang
를 포함한 많은 컴파일러가 확장으로 지원합니다. , Visual Studio 및 주석에 언급 된 것처럼 분명히 DEC C ++ 컴파일러.2.11
초안에서 다룹니다. 식별자,<-
로 시작하는 메모를 추가했습니다. :clang
를 사용하여이 코드를 컴파일하면-pedantic-errors
와 함께 컴파일되지 않습니다 플래그 :다음 오류가 발생합니다 :