"char s[static 10]"와 같은 함수의 배열 매개변수에서 정적 키워드의 목적은?
몇 가지 소스 코드를 검색하다가 다음과 같은 기능을 발견하게 되었다.
void someFunction(char someArray[static 100])
{
// do something cool here
}
일부 실험에서는 다음과 같은 다른 한정자가 나타날 수 있다.
void someFunction(char someArray[const])
{
// do something cool here
}
예선은 단지 내부에서만 허용되고 있는 것으로 보인다.[
]
배열을 함수의 매개 변수로 선언할 때이게 뭘 하는 거지?함수 매개 변수에 대해 왜 다른가?
첫 번째 선언은 컴파일러에게 다음과 같이 말한다.someArray
최소 100개의 원소 길이.이것은 최적화에 사용될 수 있다.예를 들어, 그것은 또한 다음과 같은 것을 의미한다.someArray
결코 아니다NULL
.
C 표준은 컴파일러가 함수에 대한 호출이 이러한 요구 사항을 충족하지 않는 경우(즉, 정의되지 않은 침묵의 동작)를 진단할 것을 요구하지 않는다는 점에 유의하십시오.
두 번째 선언은 단순히 선언한다.someArray
(아니오)someArray
의 요소!) 즉, 글을 쓸 수 없다.someArray=someOtherArray
. 매개 변수가 있었던 것과 같다.char * const someArray
.
이 구문은 가장 안쪽에서만 사용할 수 있다.[]
함수 매개 변수 목록에 있는 배열 선언기의 경우, 다른 컨텍스트에서는 사용할 수 없다.
위의 두 경우를 모두 다루는 표준 텍스트는 C11 6.7.6.3/7(C99의 경우 6.7.5.3/7이었다)
"형식의 배열"로 하는 매개변수 선언은 형식 한정자(있는 경우)가 "형식에 대한 적격 포인터"로 조정되어야 한다.
[
그리고]
배열 형식 파생의키워드 static이 다음 내에 나타나는 경우[
그리고]
배열 형식 파생의 다음, 함수에 대한 각 호출에 대해, 해당 실제 인수의 값은 크기 표현식에 의해 지정된 최소한 많은 요소를 가진 배열의 첫 번째 요소에 대한 접근을 제공해야 한다.
'programing' 카테고리의 다른 글
Vuex - 모듈 상태에 따라 계산된 속성이 디스패치 시 업데이트되지 않는가? (0) | 2022.05.12 |
---|---|
플러그인용 Vue CLI 3 vue.config.js 대 webpack.config.js (0) | 2022.05.12 |
대용량 데이터 세트에서 v-model을 사용할 때 vuej의 응답 속도를 높이는 방법 (0) | 2022.05.11 |
테스트를 위해 페이지의 모든 데이터를 덤핑하는 Vue 변수 (0) | 2022.05.11 |
Vuex: getter는 기능해야 하지만 모듈 "customer"의 "getters.default"는 {}임 (0) | 2022.05.11 |