结合两个宏?

时间:2014-01-27 05:42:42

标签: c++ c

以下宏MY_SIZE_OF_VARIABLE给出了sizeof变量 和MY_SIZE_OF_DATATYPE给出内置数据类型的大小。我想在一个宏中组合这两个宏。

#define MY_SIZE_OF_VARIABLE(X) (char *)(&X+1)-(char *)(&X)
#define MY_SIZE_OF_DATATYPE(X) (X*)0 + 1

我试图将这些结合起来,但我做不到。

1 个答案:

答案 0 :(得分:0)

你做不到。作为预处理器宏的邪恶魔法的一部分是它是一个简单的文本替换,没有句法上下文的判断。这样你就可以做各种古怪的事情,如连接符号,懒惰的评估等等。另一方面是你无法转身并询问它的参数是什么 - 它只是一个文本宏。

除了为中的每个符号声明一个宏,包括类型和变量,包含与__MY_SIZE连接的符号之外,你真的不能这样做。无论好坏,你都会遇到你没写过的sizeof