gpt4 book ai didi

c++ - BOOST_BINARY 宏如何解析空格?

转载 作者:可可西里 更新时间:2023-11-01 16:10:22 24 4
gpt4 key购买 nike

考虑以下代码。

int value1 = BOOST_BINARY( 100 111000 01 1 110 );

有人可以解释一下 BOOST_BINARY 如何计算那里的 int 值吗?

最佳答案

这非常非常复杂。这个 BOOST 库使用由其他宏构造的宏。

我将向您展示一些预处理器编程的简化示例:

简化的问题:

如何让宏在 rest 的开头添加 0 或 1 - 就像这个例子:

CAT ( 0 1 ) --> 01
CAT ( 1 100 ) --> 1100

所以 - 不知何故 , 必须按顺序将两个参数放在它们之间。好吧,我这样做了:

// start point - this is our desired format
#define CATS(a,b) a##b
// helper macro to invoke preprocessor on result of a
#define CALLP(a) a
// some helper symbols to build CATS()
#define CATB (
#define CATE )
#define CATSN CATS
// I use that only 0 or 1 is expected at the beginning:
// CATS ( 0,
#define CAT_B0 CATSN CATB 0,
// CATS ( 1,
#define CAT_B1 CATSN CATB 1,

// the final macro:
// Example:
// CAT(0 XXX) --> CALLP( CAT_B ## 0 XXX ) )
// --> CALLP(CAT_B0 XXX ) --> CALLP(CATSN ( 0, XXX ) )
// --> CALLP( CATS(0, XXX) ) --> CATS(0,XXX) --> 0##XXX -> 0XXX
#define CAT(tt) CALLP (CAT_B ## tt CATE)

它确实有效(至少在 gcc 是这样):http://ideone.com/EKlTGt

现在想象一下 BOOST 人员在他们的图书馆中完成的工作有多复杂?是的,它非常复杂 - 但使用我介绍的预处理器技巧,也许还有许多其他技巧 - 我查看了这个 BOOST 库的源代码 http://www.boost.org/doc/libs/1_46_1/boost/utility/binary.hpp今天是第一次(信不信由你)。

关于c++ - BOOST_BINARY 宏如何解析空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13200264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com