2

您好,我在 C 中遇到了 Boost.Preprocessor 的问题。我相信 C++ 和 C 宏的行为完全相同,因此在 C 中使用 Boost.Preprocessor 很好,无论如何我打算做一个小的完全预处理器库。我的问题是我无法使用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);

有没有搞错 ?

4

1 回答 1

4

传递-DBOOST_PP_VARIADICS=1给你的编译器。

于 2014-05-08T17:00:06.517 回答