我遇到了这样的问题:
我有一个头文件:
//first variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char a='4';
#endif // LIBRARIES_H我将其包含在几个.cpp文件中。一切都运行得很完美。
但是突然,如果我声明一个指针:
//second variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char *a="asdfgh";
#endif // LIBRARIES_H请注意,我只声明了其中的一个(变体)。
I DECLARE a only once(I tried to change name for sadfgh or asdfg).当我尝试第二个变体时,我先删除,反之亦然。
如果我声明一个指向字符串的指针,我会得到错误"multiple inclusion of variable“。我使用qt编译它。我已经删除并重新编译了几次项目。

当然,我可以在main()函数中定义它,但是我想知道这个问题的原因是什么?为什么我不能在头文件中声明指针,然后在几个源代码文件中包含它?
发布于 2012-03-19 03:59:25
Edit2显然,我之前的建议是改变
const char* a = "asdfgh"至
const char[6] a= "asdfgh"很管用。
我仍然在研究它,但是当你声明一个指针时,你只是说这个指针是常量,而不是它所指向的内存。当你声明一个数组时,你是在说const后面的数据也是不可变的。我正在进一步调查。
Edit3:this的第二段解释了发生了什么。
此外,“干杯”的答案很好地解释了这一点。
https://stackoverflow.com/questions/9761718
复制相似问题