C 언어의 restrict 키워드
restrict는 c99 표준에 도입된 것으로 바늘을 한정하고 제약하는 데만 사용할 수 있으며 바늘은 데이터 대상에 접근하는 유일하고 초기 방식임을 나타낸다.즉 컴파일러에게 이 포인터가 가리키는 메모리의 내용을 수정하는 모든 작업은 이 포인터를 통해 수정해야 하며 다른 경로(기타 변수나 포인터)를 통해 수정할 수 없다는 것을 알려준다.이렇게 하면 컴파일러가 더욱 좋은 최적화 코드를 만들고 더욱 효율적인 어셈블리 코드를 생성하는 데 도움을 줄 수 있다.
restrict에서 수식한 바늘은 주로 함수 참조에 사용되거나,malloc () 로 분배된 메모리 공간을 가리킨다.
GCC에서 어셈블리 명령을 생성하는 예를 통해 이 키워드를 더욱 잘 이해할 수 있습니다
4
.subsections_via_symbols
이 중 관건적인 어셈블리 명령은 다음과 같습니다: movl (%rdx),%eax addl%eax, (%rdi) movl (%rdx),%eax addl%eax, (%rsi)
4
총결산
restrict 키워드 성명은 주로 컴파일러가 코드 최적화를 더욱 잘 할 수 있도록 도와주며 실제로는 코드의 작성에 영향을 주지 않는다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.