함수 매개 변수의 정적 키워드
-
20-09-2019 - |
문제
방금이 기능 정의를 일부 임베디드 코드에서 찾았습니다.
float round_float_to_4(static float inputval);
나는 다른 용도에 익숙합니다 공전 (글로벌 변수, 함수 및 로컬 변수)이지만 이번이 기능 매개 변수의 지정자로 처음 보입니다. 이 컴파일러가 고정 메모리 위치를 사용하도록 강요한다고 가정합니다. inputVal 스택 대신?
해결책
이것은 비 표준입니다. 나는 당신과 똑같은 것을 추측하고, 나는 대상이 포함 된 컴파일러의 그러한 확장에 놀라지 않습니다.
다른 팁
유효하지 않습니다. 유일한 유효한 곳 static
내가 알고있는 함수 매개 변수에 사용될 수 있습니다.
float round_float_to_4(float inputval[static 4]);
에 대해 말하는 것 inputval
이 기능에 대한 모든 호출에서 최소한 제공하는 메모리를 가리킬 것입니다. 4
플로트 (이것은 C99 추가입니다. C89에는 나타나지 않습니다).
C 표준에 따라
매개 변수 선언에서 발생하는 유일한 스토리지 클래스 지정자는 레지스터입니다.
많은 임베디드 장치는 스택이 심각하게 제한되어 있습니다. 이러한 기능은 스택 오버플로의 가능성을 줄이는 데 큰 도움이 될 것입니다.
작은 칩은 스택에 변수를 넣을 기회가 없으므로 모든 매개 변수는 암시 적으로 메모리 위치입니다.
제휴하지 않습니다 StackOverflow