문제

방금이 기능 정의를 일부 임베디드 코드에서 찾았습니다.

float round_float_to_4(static float inputval);

나는 다른 용도에 익숙합니다 공전 (글로벌 변수, 함수 및 로컬 변수)이지만 이번이 기능 매개 변수의 지정자로 처음 보입니다. 이 컴파일러가 고정 메모리 위치를 사용하도록 강요한다고 가정합니다. inputVal 스택 대신?

도움이 되었습니까?

해결책

이것은 비 표준입니다. 나는 당신과 똑같은 것을 추측하고, 나는 대상이 포함 된 컴파일러의 그러한 확장에 놀라지 않습니다.

다른 팁

유효하지 않습니다. 유일한 유효한 곳 static 내가 알고있는 함수 매개 변수에 사용될 수 있습니다.

float round_float_to_4(float inputval[static 4]);

에 대해 말하는 것 inputval 이 기능에 대한 모든 호출에서 최소한 제공하는 메모리를 가리킬 것입니다. 4 플로트 (이것은 C99 추가입니다. C89에는 나타나지 않습니다).

C 표준에 따라

매개 변수 선언에서 발생하는 유일한 스토리지 클래스 지정자는 레지스터입니다.

많은 임베디드 장치는 스택이 심각하게 제한되어 있습니다. 이러한 기능은 스택 오버플로의 가능성을 줄이는 데 큰 도움이 될 것입니다.

작은 칩은 스택에 변수를 넣을 기회가 없으므로 모든 매개 변수는 암시 적으로 메모리 위치입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top