【问题标题】:Is using #define considered "bad practice"? [duplicate]使用#define 是否被认为是“不好的做法”? [复制]
【发布时间】:2018-08-11 17:21:38
【问题描述】:

目标

最后,我想知道使用#define 是否对您的代码不利,以及为什么。

代码

#include <iostream>
using namespace std;

#define favouriteNumber 20;

int main()
{
    int number = favouriteNumber;
    cout << number;
}

【问题讨论】:

  • 总是让我想起 Prince 的那首老歌,“今晚我要像 1969 年一样编程”。
  • 宏是一种生硬的工具。并非所有宏的使用都是不好的。有些是不可避免的。但是,您的示例中的用法肯定是不好的,因为它是不必要的。
  • @Galik 这也很糟糕,因为它不是 ALL_UPPERCASE 并且包含;
  • 不错的副本,如果有点不合时宜:static constexpr 在很多方面都优于 static const

标签: c++ c++14 c-preprocessor


【解决方案1】:

根据 Stroustrup 的说法,定义常量特别“糟糕”,因为编译器无法检查类型。

另一方面,如果一行宏为您节省了 20 行显式代码,那么有些人肯定会同意它是有用的,即使它本质上是不安全的。这是因为编写更多代码通常意味着更高的错误概率。

【讨论】:

  • 请问为什么投反对票?
  • 可能是因为您回答了一个不应该回答的问题。这显然是基于意见的。
  • 这远不是基于明确的意见。这是最先进的。我只是想帮忙。如果有人不喜欢这个问题,请投反对票。
  • 几乎所有人都会同意” - 黄鼠狼的话。
  • @melpomene 写更多代码意味着更多错误真的是“基于意见”吗?我在这个答案中看不出任何我客观上不真实的东西。
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多