2016-09-22 2 views
1

내 컴파일러는 무시 :gcc의 #pragma 동등성은 무엇입니까?

#pragma DATA_SECTION(..., "iram_init"); 

#pragma CODE_SECTION(..., ".icode"); 

...

는 기능입니다.

프로그램 실행시 세그먼트 화 오류가 발생합니다. 이것은 gcc 컴파일러의 구문이 잘못 되었기 때문에 발생했다고 생각합니다. 그와 동등한 무엇입니까?

감사

(컨텍스트 :이 raspian에서 라즈베리 파이에) ​​

+1

이러한 컴파일러를 지원하는 컴파일러는 무엇입니까? 무엇을 성취하려고합니까? – fuz

+0

내가받은 코드에는이 코드가 들어 있습니다. 나는 정말로 이해하지 못하는 것을 테스트하기 위해이 프로그램을 실행하려고 노력하고있다. –

+0

이것을 확인해보십시오. http://stackoverflow.com/questions/9716637/what-is-the-use-of-pragma-code-section-and-data-section –

답변

3

등가은 다음과 같습니다

__attribute__((section(".icode"))) void fct1(int toto) { ... } 
__attribute__((section("iram_init"))) int fct2(void) { ... } 

__attribute__((section(".var"))) int myvar; 

하지만이 링커 스크립트에 대해 알아서 (일반적으로 ".ld "gnu 도구 사용) : 섹션을 정의하고 올바른 메모리에 매핑해야합니다.

+0

변수에 대해 동일합니까? –

+0

예 변수에 대해 동일합니다 (내 편집 참조). – Garf365

+0

'__attribute __ ((section (..)))'은 프로토 타입 또는 extern 선언이 아닌 변수 및 함수의 정의와 함께 있어야합니다. (나는 이미 올바르게 작성했다고 생각하지만 명시 적으로 이것을 선호합니다.) – Garf365