我正在使用gcc编译器在Linux上使用Netbeans编写一个程序,当在Windows 7上切换到Visual C ++时,代码无法编译,因为Visual C ++在几行上说expected constant expression
。在Netbeans上,我只是做了一些类似于char name[fullName.size()];
的东西,而在Visual C ++上,我试过了,除其他外,
const int position = fullName.size();
char Name[position];
如何创建一个用于数组的常量?
注意:我知道this question,但有什么方法可以让我在不使用向量的情况下工作,因为这需要重写程序的许多部分?
答案 0 :(得分:2)
答案 1 :(得分:1)
C ++要求在编译时知道数组的大小。如果您不介意使用非标准扩展,gcc确实允许您正在执行的代码(请注意,虽然它不是标准C ++,但它在 我还猜测你可以使用一个向量(在这个特定的地方)比你想象的麻烦少 - 为数组编写的相当多的代码可以使用只重新编译的向量,很少或根本没有重写。
答案 2 :(得分:1)
在VC ++中,您不能对堆栈数组大小进行运行时声明,但可以通过_alloca进行堆栈分配
所以这个:
const int position = fullName.size();
char Name[position];
成为这个:
const int position = fullName.size();
char * Name = (char*)_alloca(position * sizeof(char));
这不是一回事,但它与你将要进入VC ++一样接近。
答案 3 :(得分:0)
你的char name[fullName.size()];
是一个variable-length array的例子 - 据我所知 - 它在C ++中没有标准化,所以你受编译器的支配。
[稍微偏离主题他们是C99标准的一部分]