2017-01-30 8 views
0

두 개의 고유 한 식별자는 전체 길이에 관계없이 처음 31 자 사이에 달라야한다고합니다. C에서 식별자의 길이 (31 자)에 대한 제한이있는 이유는 무엇입니까?C에서 식별자의 길이에 대한 제한

+2

표준은 현재 아키텍처에서 가장 낮은 공통 분모를 보장하기 위해 구현에 대한 [하한선] (http://port70.net/~nsz/c/c11/n1570.html#5.2.4.1) 만 따라야합니다. 그러나 또한 가능한 한 언제나 (http://port70.net/~nsz/c/c11/n1570.html#note18) 구현을 훨씬 능가합니다. – StoryTeller

+0

연구에 대한 공식 문서를 읽는 것이 좋습니다. – roottraveller

+0

C99 이전에는 요구 사항이 6 자였습니다. 그것은 최소 시간을 초과하지 않는 링커와 작업 할 때 즐거웠습니다. –

답변

0

이 제한은 변수 이름에 대해 32 자 (31 + 널 종결 자)를 컴파일러가 안전하게 할당 할 수 있도록 내부 부기를 더 간단하게 만드는 것입니다 (다른 종이 양식의 성 길이에 제한이 있음) . 정확한 한계는 임의적이며, 메모리가 충분하고 프로그래머에게는 충분히 크다.

또한 일부 시스템에서는 링크가 C 컴파일러 시스템과 별도의 단계이므로 C에 기록되지 않은 오브젝트 파일이 링크 될 수 있습니다. 식별자 길이에 제한이있을 수 있습니다.

업데이트 : 여러 언어로 작성된 하나의 프로그램을 만들 수 있습니다 (예 : 기능이 이미 Fortran에서 작성되어 메인 C 코드에서 호출되었을 수 있음). 다른 언어는 가변 길이에 다른 한계를 부과 할 수 있습니다 (인공적인 예 : abcdefabcdef1이 포트란 코드에서 동일한 기능을 나타내는 것으로 간주되는 경우 C 코드에서와 같아야 함). 성명을 사용한 예 : 지방 당국은 길이가 길거나 현지 언어로 된 이름을 처리 할 수 ​​있지만 연방 당국의 요구 사항은 더 엄격 할 수 있습니다.

+0

해답을 이해해 주셔서 감사합니다. 링크 길이가 식별자의 길이에 어떻게 제한되는지 자세히 설명해주십시오. – manasBVSS

+0

그것이 게시물을 편집 한 Malcolm McLean의 추가였습니다. 답변을 업데이트했습니다. –