2012-06-06 2 views
2

확대되지 않습니다BOOST_PP_VARIADIC_SIZE은 다음과 내가 BOOST_PP_VARIADIC_SIZE을 테스트입니다

#include <boost/preprocessor.hpp> 
#define PORT_HOST A,B 
#define PORT_ADDR 1,2,3,4 
#define VAR_DATA x, y, z 
BOOST_PP_VARIADIC_SIZE(VAR_DATA) 

이 내가 확장 후 무엇을 얻을 수 있습니다 :

#define SEQ (B)(O)(O)(S)(T) 
BOOST_PP_SEQ_ENUM(SEQ) // expands to B, O, O, S, T 

후 :

BOOST_PP_VARIADIC_SIZE(x, y, z) 

을하지만이 작업을 수행하는 경우 확장, 얻을 수 :

B, O, O, S, T 

저는 Mac OS에서 거의 최신 clang을 사용하고 있습니다. g ++도 동일한 결과를 산출합니다.

여기에 무슨 일이 일어나고 있는지 궁금합니다. 가변성 부스트 전 처리기가 왜 제대로 확장되지 않는지. 부스트 1.49.0을 사용하고 있습니다.

+0

1 : -..] – ildjarn

답변

2

답을 찾았습니다. Boost 1.49의 헤더 파일 BOOST/Preprorccessor/config.hpp에서 clang은 Variadic marcos를 지원하도록 정의되지 않았습니다. "테스트하지"입니다 이유 .... :(

이 후 연타 수는 가변 마르코는 예상대로 확장 비정상적으로 완벽하게 태그가 질문에 대한

+0

가 1.53로이 문제에 달렸다 https://github.com/ishani/ClangVSx를 사용하여 Clang의 일부 MSVC 코드를 재생하면서 Google을 통해 "clang boost preprocessor"검색을 입력하면 운 좋게 첫 번째 결과가 나타납니다. o) – kornman00

관련 문제