gpt4 book ai didi

编译时 sizeof 条件

转载 作者:太空狗 更新时间:2023-10-29 16:32:57 25 4
gpt4 key购买 nike

如果涉及 sizeof 的条件为真,我想定义一个宏,如果为假,则不执行任何操作(但仍然编译)。如果预处理器支持 sizeof,它看起来像这样:

#if (sizeof(void*) <= sizeof(unsigned int)) // what goes here?
# define POINTER_FITS_INTO_UINT
#endif

有一些页面(例如 http://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/ )解释了如何在 sizeof 上进行编译时断言(如果失败则无法编译),但是我看不出有什么方法可以将这种方法扩展到我想要的。

最佳答案

你就是做不到。 sizeof 是编译时运算符。 #if 和#define 和预处理器相关。由于预处理器在编译器之前运行,因此这是行不通的。但是,您可能能够找到一个神秘的编译器开关,允许您多次传递它(即预处理、假装编译、预处理、编译),但是,平心而论,我会放弃尝试做你想做的事。它不应该工作,简单地说,它不工作。

最好的办法是将此类定义设置为传递给编译器的 -D 命令。您可以静态断言所选择的是正确的。这样,您只需在外部为给定的编译模式(例如 PowerPC Release)等设置一些定义。

关于编译时 sizeof 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374379/

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