Здравствуйте, у меня проблема с 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);
Какого черта ?
Проходить -DBOOST_PP_VARIADICS=1
к вашему компилятору.