Boost.preprocessor: BOOST_PP_EQUAL не работает

Здравствуйте, у меня проблема с Boost.Preprocessor в C. Я считаю, что макросы C ++ и C ведут себя точно так же, поэтому использование Boost.Preprocessor прекрасно в C, и в любом случае я собираюсь создать небольшую полностью препроцессорную библиотеку. Моя проблема в том, что я не могу скомпилировать крошечную программу, используя BOOST_PP_EQUAL, Вот пример кода, который вы можете построить:

#include <stdlib.h>
#include <stdio.h>
#include <boost/preprocessor.hpp>

#define TUPLE (0,1,2)
#define IS_NON_ZERO(NODE) BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(NODE),0)

int main(void)
{
int x;
x = IS_NON_ZERO(TUPLE);
printf("result: %d\n",x);
return EXIT_SUCCESS;
}

Я использую clang и gcc, и оба сказали мне, что макрос BOOST_PP_NOT_EQUALS не существует!

tiny.c:6:27: error: ‘BOOST_PP_NOT_EQUAL_0’ undeclared (first use in this function)

Что не так с моим кодом? Заранее спасибо !

РЕДАКТИРОВАТЬ: Вот не-макрос строки с использованием -E флаг.

 x = BOOST_PP_COMPL_BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_BOOST_PP_TUPLE_SIZE((0,1,2))(0, BOOST_PP_NOT_EQUAL_0);

Какого черта ?

2

Решение

Проходить -DBOOST_PP_VARIADICS=1 к вашему компилятору.

4

Другие решения