finding-c++-static-initialization-order-problems, 헤더 파일에 매크로를 정의하고 싶습니다. "check_fiasco.h"를 작성한 다음,이 헤더 파일을 워렌 스티븐스 (Warren Stevens)의 아이디어처럼 모든 cpp 파일의 맨 위에 놓습니다. 그러나, 나는 리눅스에서 자신의 코드를 시도하고 작동하지 않는다. (컴파일되지만 실행될 때 충돌한다.) "/"함수 이름에 사용할 수 없습니다로 붙여 넣기 파일 이름으로,파일 이름이 매크로로 정의됩니다.
#define TOKENCONCAT(x, y) x ## y
#define file_init_(x, y) TOKENCONCAT(x, y)
#define FIASCO_FINDER_DEC \
void file_init_(file_, __FILE__)(void) ((constructor)) ;
#define FIASCO_FINDER_IMPL \
void file_init_(file_, __FILE__)(void) __attribute__ {\
printf("Good Morning, %s!\n", __FILE__);\
return ;\
}
그러나이 작동하지 않습니다
나는 다음 매크로를 시도했다. 선언과 구현이 동일해야하므로__COUNTER__
을 사용할 수 없습니다.
아이디어가 있으십니까?
이것은 C++ 문제이며 C와 관련이 없습니다. C 태그를 제거합니다. – Lundin