非常简单地说:
我有一个主要由静态公共成员组成的类,所以我可以将类似的函数组合在一起,但仍然需要从其他类/函数中调用它们.
无论如何,我在我的类公共范围中定义了两个静态unsigned char变量,当我尝试在同一个类的构造函数中修改这些值时,我在编译时遇到"未解析的外部符号"错误.
class test 
{
public:
    static unsigned char X;
    static unsigned char Y;
    ...
    test();
};
test::test() 
{
    X = 1;
    Y = 2;
}
我是C++的新手,所以对我很轻松.为什么我不能这样做?
在示例代码中
void foo()
{
  static Bar b;
  ...
}
使用GCC编译是否可以保证b以线程安全的方式创建和初始化?
在gcc的手册页中,找到了-fno-threadsafe-statics命令行选项:
不要发出额外的代码来使用C++ ABI中指定的例程来进行本地静态的线程安全初始化.您可以使用此选项在不需要线程安全的代码中略微减小代码大小.
这是否意味着,默认情况下,GCC的本地静态是线程安全的?所以没有理由明确保护,例如pthread_mutex_lock/unlock?
如何编写可移植代码 - 如何检查编译器是否会添加其防护?或者关闭GCC的这个功能是否更好?
众所周知,关键字在C语言中static有多重含义 .C99增加了合法写作的可能性
void foo (int arr[static 50])
{
    // ...
}
这增加了混乱,而C++有静态成员变量和函数.
如果可以以某种方式连接所有用途,这不会那么麻烦,但我发现很难找到某些情况的链接.特别是为什么static关键字应该用于修改可见性(链接),或者它究竟与数组的最小元素数量有关.
那么滥用static关键字是否存在历史原因,或者是否存在连接其所有用途的秘密链接?
对这样一个基本问题道歉,但我无法弄清楚.我知道你可以像这样初始化一个类:
QFile file("C:\\example");
但是,您如何从全局变量初始化它?例如:
QFile file; //QFile class
int main()
{
    file = ?? //need to initialize 'file' with the QFile class
}