6
#define PATH "yagh/headers/" 
#define FILNAME "includefile" 


#define CONCAT(a__, b__) CONCAT_DO(a__, b__) 
#define CONCAT_DO(a__, b__) a__##b__ 
#define CONCATTHREE(a__, b__, c__) CONCAT(CONCAT(a__, b__), c__) 
#define STRINGIFY(a__) #a__ 


#include STRINGIFY(CONCATTHREE(PATH ,FILNAME ,.h)); 

이 매크로 VS 컴파일러에서 잘 작동하지만 GCC 컴파일러에서 컴파일되지 않습니다 : 처리기 매크로 GCC는 : 붙여 넣기 x와 X는 토큰이 유효한 전처리를 제공하지 않습니다

Error: error: pasting "/" and "includefile" does not give a valid preprocessing token

및 일부

포함 파일이 있습니다 에러는 :

Error: pasting "includefile" and "." does not give a valid preprocessing token

+1

GCC의''foo ''와 같은 문자열 리터럴에서는'##'연산자와 연결하지 않습니다. 이 매크로로 정확히 무엇을하려합니까? – thkala

+0

이 문제에 대한 대답을 찾을 수 있습니까? – Michael

+1

흥미 롭습니다. 두 파일 모두'gcc를 통해 코드를 실행할 때 실제로 볼 수있는'include 파일 "CONCATTHREE (PATH, FILNAME, .h)"'과 같은 오류를 줄 것을 기대합니다 ... –

답변

관련 문제