일부 기능을 재정의 할 수있는 잘 문서화되지 않은 c 라이브러리가 있습니다. 그러나 슬프게도 예는 없습니다.
library.h :
#ifndef some_function
uint8_t some_function(void);
#endif
그래서 내 C ++ 코드에서 다음과 같은 함수를 정의했습니다.
#include "library.h"
extern "C" uint8_t some_function(void) { return 0;}
void main() {
....
}
하지만 라이브러리에 정의 된 코드를 사용합니다.
다음 시도 :
#define some_function
#include "library.h"
uint8_t some_function(void) { return 0;}
결과 :
src/main.cpp: error: expected unqualified-id before 'void'
extern "C" uint8_t some_function(void);
함수 이름이 정의로 대체되기 때문입니다.
어떤 제안?
어떤 제안?
#define some_function some_function
물론 이것을 옹호하지는 않지만 작동해야합니다.
작성자는 사용자가 다른 이름으로 자신의 기능을 정의 할 수 있도록 허용하고 싶었을 것입니다. 즉, 매크로는 라이브러리가 사용자 정의 함수 이름을 사용하는 것만 큼 의미가 없습니다.
uint8_t my_function(void) { return 0;}
...
#define some_function my_function
#include "library.h"
아무도 이러한 매크로를 정의하지 않으면 작성자가 동일한 함수를 정의하여 모든 호출이 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다