는 내가 (내가 관련된 질문이 실행되고 심지어 그래도 할 수있는 한 간단하게이를 유지하려고하지만 이것은 일반적인 가정된다.다른 c-File의 기호 (기능)에서 속성을 변경할 수 있습니까?
내가 프로토 타입과 함수 extern void foo(void)
를 선언하고 같은에서 그것을 호출 할 때 C-파일, 나는 또 다른 C-파일에 그것을 속성 weak
을 줄 수
이유는 이것이다 :?. foo()
이 구현되는 extern
기능은 일부 빌드 옵션에 따라 달라거나 바이너리에 추가 할 수 없습니다 여부 경우 그것은 분명히 오류 undefined reference
을 얻게 되었기 때문에 GCC에서 __attribute__((weak))
또는 #pragma weak
을 사용하여 약하게 선언하려고합니다. 웬일인지 (여기서 설명하기를 갈망합니다) 원래 선언에 #pragma
/attribute
을 추가하지 않고 별도의 C 파일에서이 작업을 수행하고 싶습니다. - 어쨌든 이걸 할 수 있을까요? 난 그냥 #pragma weak foo
anothr C- 파일에 추가하면 작동하지 않습니다. 프로젝트
Function.c
extern void foo(void);
// #pragma weak foo <-- If I add it here, it links without problems
void bar(void)
{
foo();
}
에
하지을 연결
foo
의 구현입니다 :
// 편집 (나는 GCC 4.8.1를 사용하고 있습니다) : 몇 가지 코드를 요청한 : 주
WeakDeclaration.c
#pragma weak foo <-- If I add it here, I get undefined reference error
// EDIT2 :
가 좋아 난 그렇게 내 질문을 지정하려고거야 더 비트 - (WeakDeclaration.c
)
설명이 혼란 스럽습니다. 일부 코드를 보여주십시오. 또한 * "작동하지 않을 것"*이라는 의미를 정의하십시오. – user694733
함수를 호출하거나 참조 하시겠습니까? 만약 그렇다면, 나는 당신이 그것 없이는 가끔씩 만들 것을 기대할 수있는 방법을 전혀 이해하지 못한다 ... – unwind