#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
GCC의''foo ''와 같은 문자열 리터럴에서는'##'연산자와 연결하지 않습니다. 이 매크로로 정확히 무엇을하려합니까? – thkala
이 문제에 대한 대답을 찾을 수 있습니까? – Michael
흥미 롭습니다. 두 파일 모두'gcc를 통해 코드를 실행할 때 실제로 볼 수있는'include 파일 "CONCATTHREE (PATH, FILNAME, .h)"'과 같은 오류를 줄 것을 기대합니다 ... –