首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标准调用实际上是宏

问标准调用实际上是宏
EN

Stack Overflow用户
提问于 2017-06-05 13:05:33
回答 1查看 95关注 0票数 2

我问了一个关于here的问题,assert是作为宏而不是函数在标准中实现的。

这给我带来了一个问题,因为assert在接受参数的方式上似乎是一个函数:assert(true),因此我尝试将它用作:std::assert(true),当然,作为一个无法工作的宏。

我的问题是:标准库提供的其他宏是否会显示为接受参数的函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 13:51:31

如果我们看标题第5段和第6段

在C中定义为宏的名称将在C++标准库中定义为宏,即使C授予作为函数的实现许可。注意:C中定义为宏的名称包括以下内容:assert、offsetof、setjmp、va_arg、va_end和va_start。-end注记 在C中定义为函数的名称将定义为C++标准库中的函数。

因此,如果在C中将其定义为宏,那么它将是C++中的宏。不过也有几个例外。摘自support.runtime第7和第8段

标头<cstdalign>和标头<stdalign.h>不应定义名为alignas的宏。 标头<cstdbool>和标头<stdbool.h>不应定义名为bool、true或false的宏。

尽管headers/7也涵盖了这些异常

在C++中作为关键字或操作符的标识符不应定义为C++标准库标头中的宏。

也有一个例外,即7.12.3分类宏中定义的所有分类宏都会被每10/10的函数重载。

分类/比较函数的行为与C宏的行为相同,相应的名称在C标准中定义在7.12.3分类宏和7.12.14比较宏中。对于三种浮点类型,每个函数都被重载,如下所示: 布尔分类(浮x);bool isinf(浮x);bool isinf(浮x);bool isnan(浮x);bool正态(浮x);bool signbit(浮x);bool更大(浮x,浮y);bool isgreaterequal(浮x,浮y);bool islessequal(浮x浮子y);bool岛红杉(浮x浮y);bool isless(浮x浮子y);bool isunordered(浮x浮子y);int fpclassify(双x);bool有限(浮x浮x);bool isinf(浮y);bool is超(浮x浮子y);bool是正态分布( double x);bool signbit(double x);bool更大( double x,double y);bool isgreaterequal(double x,double y);bool isgreaterequal( double x,double y);bool isinf( double x,double y);bool孤岛续集( double x,double y);bool Isess大号( double x,double y);bool isunordered(double x,double y);int fpclassify(长双x);bool isinf(长双x);bool isnan(长双x);bool isinf(长双x);bool isnan(长双x);bool isinf(长双x);bool int(长双x);bool isinf(长双x);bool isinf(长双x);bool int(长双x);bool isinf(长双x);bool isnan(长双x);bool isinf(长双x);bool isinf(长bool更大(长双x,长双y);bool等于(长双x,长双y);bool无序(长双x,长双y);bool岛序(长双x,长双y);bool岛大(长双x,长双y);bool无序(长双x,长双y);

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44369648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档