什么是更好的表现?

时间:2014-03-27 01:40:26

标签: c arrays performance c-preprocessor

我想知道什么在性能方面效果最好? 拥有那个

更好吗?
char ar1[5] = "work";
char ar2[5] = "flue";
/*...*/
char ar50[6] = "alias";

或者让#define

中的所有内容更有效率
#define ar1 "work"
#define ar2 "flue"
/*...*/
#define ar50 "alias"

或者它有什么不同?

注意:Iff你不操纵这些字符串,更改数组值等,只使用它们来获取它们的值。

1 个答案:

答案 0 :(得分:2)

const char ar1[5] = "work";
const char ar2[5] = "flue";
/*...*/
const char ar50[6] = "alias";

您应该更喜欢上述风格而不是其他风格。我发现以下原因可以这样做。

  1. 这些数组变量的类型和大小。因此,您的计划中的类型安全性会更好。

  2. 此版本使程序更易于阅读,理解和调试。这是非常重要的属性,我们在编写任何软件时都应该考虑。

  3. 没有为macro / #define定义标准,因此可以自由选择不同的编译器 在您的计划中扩展这些策略时的不同策略。可能有一个副本 每次文字出现在源代码中,或者一个主副本共享 实例

  4. 修改

    正如您所提到的,您只是在程序中阅读这些字符串,最好将其设为 const 。这也清楚地表明了程序员对读者的意图。 / p>