использование макротокена в прагме приводит к некорректной замене - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь использовать макрос с "pragma include_alias" в VS2010, но я получил странное предупреждение о компиляции, которое означает, что подстановка неверна.Вот код:

18 #define RAPID_INCLUDES_PATH(MY_TARGET_HEADERS)  "C:\\thirdpart\\rapidxml-1.13\\" ##  #MY_TARGET_HEADERS  
19 #define TEST(empty) "C:\\thirdpart\\rapidxml-1.13\\rapidxml_print.hpp"

//WORKS
21 #pragma include_alias( "rapidxml.hpp",  "C:\\thirdpart\\rapidxml-1.13\\rapidxml.hpp"  )
22 #pragma include_alias( "rapidxml_print.hpp" , TEST(empty) )

//FAILS
23 #pragma include_alias( "rapidxml_utils.hpp" , RAPID_INCLUDES_PATH(rapidxml_utils.hpp) )
24 #pragma include_alias( "rapidxml_iterators.hpp" , RAPID_INCLUDES_PATH(rapidxml_iterators.hpp)   )


26 #include "rapidxml.hpp"
27 #include "rapidxml_iterators.hpp"
28 #include "rapidxml_print.hpp"
29 #include "rapidxml_utils.hpp"

Сообщения об ошибках:

1>  Touching "Debug\xml2.unsuccessfulbuild".
1>ClCompile:
1>  stdafx.cpp
1>d:\workspace\v10\xml2\xml2\stdafx.h(23): warning C4081: expected ')'; found 'string'
1>d:\workspace\v10\xml2\xml2\stdafx.h(24): warning C4081: expected ')'; found 'string'
1>d:\workspace\v10\xml2\xml2\stdafx.h(27): fatal error C1083: Cannot open include file: 'rapidxml_iterators.hpp': No such file or directory
1>
1>Build FAILED.
1>

Кажется, что есть некоторые злоупотребления макросом.Кто-нибудь знает, как это исправить?Большое спасибо.

...