這實質上就是我想要做的,但不是實際的源代碼。爲什麼這個數組不能初始化?
namespace namespace { int array [3]; } namespace::array={1,2,3}
我的gcc詢問的表情,我不知道該怎麼做。我必須namespace::array[1];
每個單獨的元素?
這實質上就是我想要做的,但不是實際的源代碼。爲什麼這個數組不能初始化?
namespace namespace { int array [3]; } namespace::array={1,2,3}
我的gcc詢問的表情,我不知道該怎麼做。我必須namespace::array[1];
每個單獨的元素?
只能在定義中使用的初始化列表:
int array[3] = { 1, 2, 3 };
如果你使用:
int array[3];
,那麼你需要初始化函數中的數組,使用
array[0] = 1;
array[1] = 2;
array[2] = 3;
namespace ns { int array[3] = {1, 2, 3}; }
怎麼樣?
雖然C99和C++的奇數混合物,GCC允許這樣的:
#include <string.h>
int a[3];
int main()
{
memcpy(a, (int[3]){ 1, 2, 3}, sizeof(a));
}
!
有幾種方法:
1)每個元素明確設置值:
namespace ns {
int array [3];
}
ns::array[0]=1;
ns::array[1]=2;
ns::array[2]=3;
\\ or if they should contain consequtive values:
\\ for (size_t i = 0; i < 3; ++i)
\\ ns::array[i] = i + 1;
2)如果你想在地方其聲明中初始化靜態數組,那麼你可以將它初始化列表如下:
namespace ns {
int array[3] = {1, 2, 3};
}
3)使用typedef
:
namespace ns {
typedef int array_t[3];
}
ns::array_t array = {1, 2, 3};
3)您還可以的std :: TR1 ::陣列,它可以被用作這樣的一些研究:
std::tr1::array<int, 3> arr = {1, 2, 3};
..that確實奇怪,我從來沒有見過這樣的事情之前! +1爲唯一... – Nim 2011-04-14 22:01:24
我檢查了裝配,它確實有效。我懷疑它也適用於非常量表達式。 – 2011-04-14 22:03:07