inline Constexpr const char *函数在不同的头文件中

时间:2017-04-15 05:28:30

标签: constexpr

我可以在C ++头文件中定义以下函数,然后将其包含在不同的.cc文件中。 我想知道编译器是否总是求助于相同的str地址,或者它可能是不同的,还是它的未定义行为?

inline constexpr const char *GetCompilerOptions() {
  return ""
  #ifdef __AVX__
         "AVX,"
  #endif  // __AVX__
  ;
}

1 个答案:

答案 0 :(得分:0)

这里没有魔力,内联是内联的。 constexpr并未改变这种情况。

简而言之,内联函数与手动粘贴身体相同。因此,其地址不保证是相同的。但是,大多数编译器将优化到一个地址以节省空间(允许优化本身)。

如果您确实需要静态地址,则必须将其设置为静态/全局并将其放在专用的源设备中。标题中的内容不太可能有稳定的地址。