首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在代码中定义内联替换的方法有哪些?

在代码中定义内联替换的方法有哪些?
EN

Stack Overflow用户
提问于 2021-11-24 09:15:44
回答 3查看 85关注 0票数 0

我想将(var-1) > 0? var - 1: 0定义为内联替换。比如

#define MAX(VAR) as (VAR-1) > 0? VAR- 1: 0

using之类的吗?

EN

回答 3

Stack Overflow用户

发布于 2021-11-24 09:27:58

您定义了一个函数,并将其留给实现来适当地内联它。

代码语言:javascript
运行
复制
 constexpr int max(int var) { return (var - 1) > 0 ? (var - 1) : 0; }

旁白:max不是一个很好的名字,我建议使用像clamp_positive这样的名字

票数 6
EN

Stack Overflow用户

发布于 2021-11-24 09:31:47

您可以使用inline关键字:

代码语言:javascript
运行
复制
inline int max(int var) 
{ 
    return (var - 1) > 0 ? (var - 1) : 0; 
}

但是,这不会强制内联,它只是建议编译器应该使此函数内联。即使您不使用inline关键字,编译器也可以拒绝您的建议,或者使其内联

票数 1
EN

Stack Overflow用户

发布于 2021-11-24 09:25:40

语法是#定义,因为预处理器是简单的

代码语言:javascript
运行
复制
#define Name(...args) (replacement)

不使用as=

所以你的定义应该是

代码语言:javascript
运行
复制
#define MAX(VAR) (VAR-1) > 0? VAR- 1: 0

在我的经验中,我总是发现像这样的定义用括号包装是很有用的,以避免歧义,你永远不知道它会被替换在哪里,例如MAX(x)*5会给出与MAX(x)相同的(x-1) > 0 ? x-1 : 0*5

代码语言:javascript
运行
复制
#define MAX(VAR) ((VAR-1) > 0? VAR- 1: 0)

如果您想要使用注释中建议的函数

代码语言:javascript
运行
复制
int MAX(int v){
  return (v-1)>0? v-1:0;
}

或者作为模板函数

代码语言:javascript
运行
复制
template<typename Tp>
Tp MAX(const _Tp &v){
  return (v-1)>0? v-1:0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70093402

复制
相关文章

相似问题

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