在使用-std=c17 -pedantic-errors -Wall -Wextra编译gcc (或clang)的最新版本时static int x =对于具有静态或线程存储持续时间的对象,初始化程序中的所有表达式都应该是常量表达式或字符串文本。然后定义常量表达式,在本例中为整数常量表达式(6.6):
整数<em
假设我有一个static const int类成员变量。它是在类定义中直接初始化的,但是它在.cpp中没有定义(这是好的,因为它不是odr使用的)。此外,假设这个常量用于另一个类的构造函数初始化程序列表中,并且创建了另一个类的全局实例。// mytype1.hpp{ static const int g_myConstant = 42; // no definition in cpp换句话说: