我可以在C ++头文件中定义以下函数,然后将其包含在不同的.cc文件中。 我想知道编译器是否总是求助于相同的str地址,或者它可能是不同的,还是它的未定义行为?
inline constexpr const char *GetCompilerOptions() {
return ""
#ifdef __AVX__
"AVX,"
#endif // __AVX__
;
}
答案 0 :(得分:0)
这里没有魔力,内联是内联的。 constexpr
并未改变这种情况。
简而言之,内联函数与手动粘贴身体相同。因此,其地址不保证是相同的。但是,大多数编译器将优化到一个地址以节省空间(允许优化本身)。
如果您确实需要静态地址,则必须将其设置为静态/全局并将其放在专用的源设备中。标题中的内容不太可能有稳定的地址。