【问题标题】:What does 'note: expanded from macro 'bool' #define bool _Bool' mean?'note: expand from macro 'bool' #define bool _Bool' 是什么意思?
【发布时间】:2018-12-15 07:46:15
【问题描述】:

我看了又看,不知道这个错误是什么意思。我正在尝试编写一个确定三角形是否有效的 C 程序,但是当我在命令行中创建它时,它似乎告诉我 bool 有问题。我真的花了一些时间在这上面,我只是不知道如何让它运行。

【问题讨论】:

  • 欢迎来到 SO!请在问题本身中发布所有代码,而不是链接到图像,这可能会随着时间的推移而下降,并且不容易复制/验证。

标签: c boolean


【解决方案1】:

bool 是一个扩展为_Bool 的宏,它在<stdbool.h> 中定义。

所以当你写的时候:

if (bool valid_triangle)

它被视为你写的:

if (_Bool valid_triangle)

这不是有效的语法。 _Bool 是类型说明符,将表达式转换为类型的方法是将说明符放在括号中。所以应该是:

if ((bool)valid_triangle)

但是valid_triangle 不是变量,而是函数。它已经声明返回bool,所以你不需要强制转换它。实际上应该是:

if (valid_triangle(a, b, c))

【讨论】:

  • valid_triangle()main() 中的第二个声明并不是真正必要或可取的。
猜你喜欢
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2012-02-15
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多