当前位置: 首页 > 知识库问答 >
问题:

调用内联函数的预处理器宏

严易安
2023-03-14

在我的代码中,我使用了预处理器宏

#define BAR(x) x+2

但后来我意识到我需要一个内联函数,并最终得到了以下代码

#define BAR(x) in_bar(x)

inline double in_bar(double x) {
  return x + 2;
}

void main() {
  std::cout << BAR(2) << std::endl;
}

它有效吗?这似乎有效,但不会造成任何潜在问题吗?

共有2个答案

白高逸
2023-03-14

您的原始宏已损坏,使用函数将更正此问题。

E、 g.如果有人写了条(1

如果您的一些代码依赖于这种破坏性的行为,结果会有所不同(但在大多数情况下,函数变体会更好)。正如其他人所建议的,只需将BAR设置为内联函数,而不需要任何宏。

顺便说一句:正确的宏应该是

#define BAR(x) ((x)+2)
艾弘义
2023-03-14

它是有效的,但不必要。而是直接从main调用内联函数。此外,main应返回int

inline double in_bar(double x) {
    return x + 2;
}

int main() {
    std::cout << in_bar(2) << std::endl;
}

 类似资料:
  • 简而言之:我想创建一个类型为的泛型类,它应该调用一个类型为的具体化内联函数,以便能够更通用地使用Gson 但是我希望我的其他类通过某个类实例调用这个函数。例如,类似于应该返回列表,而不是直接调用。我如何实现这样的功能?

  • 问题 当你编写使用回调函数的代码的时候,担心很多小函数的扩张可能会弄乱程序控制流。 你希望找到某个方法来让代码看上去更像是一个普通的执行序列。 解决方案 通过使用生成器和协程可以使得回调函数内联在某个函数中。 为了演示说明,假设你有如下所示的一个执行某种计算任务然后调用一个回调函数的函数(参考7.10小节): def apply_async(func, args, *, callback):

  • 例外情况。kt: 在科特林: 它在kotlin中工作,函数是内联的。 但是当在Java代码中使用时,它就是不能内联,仍然是一个正常的静态方法调用(从反编译的内容中可以看出)。 像这样的东西:

  • 将 vue-loader 与 webpack 一起使用的好处之一是能够直接在你的 Vue 组件文件中预处理你的 HTML/CSS/JS,而无需其他工作。请查询 这里 相关的详细信息。 使用案例 假设我们需要使用 Sass/SCSS 来预处理我们的 CSS。首先,我们需要安装正确的 webpack 加载器来处理这种语法。 安装 sass-loader npm install --save-dev s

  • 在 webpack 中,所有的预处理器需要匹配对应的 loader。vue-loader 允许你使用其它 webpack loader 处理 Vue 组件的某一部分。它会根据 lang 属性自动推断出要使用的 loader。 CSS 例如,使用 Sass 编译我们的 <style> 语言块: npm install sass-loader node-sass --save-dev <style

  • 得益于 vue-loader, 我们可以通过 lang 属性在组件中的<template>, <script> 或 <style> 上使用各种预处理器。 举个例子,我们在 pages/index.vue 组件中使用 Pug, CoffeeScript 和 Sass: <template lang="pug"> h1.red Hello {{ name }}! </template> <scr