2010-06-24 4 views

답변

3

예. (인용문 없음, 거기에 아무런 제한이 없다. 배열에 레지스터를 사용하는 것이 유효하고 배열이 구조체 인 C에서 훨씬 더 2 류 시민이다.).

3

그렇습니다. 그러나 레지스터는 컴파일러가 시도 할 수있는 힌트 일 뿐이므로 실제로 어떤 구현도이를 실제로 듣지 않아야합니다. 또한 레지스터에 할당 된 공간 내에 저장할 수없는 구조체를 만드는 것도 쉽습니다.

기계 종속적 문제에 가까워지기 시작하면 하드웨어의 종류가 다양하므로 모든 아키텍처에서이 수준에서 똑같은 사항이 안정적으로 가능하지 않으므로 표준의 일부분은 단순한 제안 일뿐입니다.

2

예 유효합니다.

register을 키워드로 사용한다고해서 변수가 레지스터에 저장된다는 의미는 아닙니다. (기본적으로 C에는 이것에 대한 개념이 없습니다). 은이 변수의 주소를 취하지 않음을 의미합니다..

+0

'register'가 제약 조건 위반을 부과하기 때문에 그렇지 않다면 키워드 의미를 갖는 것이 더 유용 할 것이기 때문에 "이 두 값 사이의 주소가 * 사용되지 않는 한이 값의 값은 변경되지 않습니다. ". 'register x, y;와 같이 주어집니다. getCoords (&x,&y);'컴파일러는'getCoords'를 호출하는 동안'x'와'y'를 메모리에 저장해야만하지만 나중에 레지스터에 캐시 할 수 있습니다. 최적화에 유용하며 컴파일러가 이해할 수없는 것 표준을 너무 심하게 생각하면 ... – supercat

+0

제약 조건 위반 – supercat

+0

@supercat, 당신은 정말로 오래된 것을 여기에서 파 냈습니다. 아니오, 그런 종류의 최적화가 더 나은 것으로 남았습니다. 컴파일러, 나는 생각한다. 실제로 존재하는'register'는 마커이다. 나는이 변수가 별칭이되는 것을 원하지 않는다. 그리고'const' qualification과 결합하여 매우 유용 할 수있다. –