我使用以下代码根据用户输入设置缓存大小
int size=1024;
Console::WriteLine("Select the Cache Size.\n a. 1 Kb \n b. 2 Kb \n c. 4 Kb \n d. 8 Kb\n");
String^ CACHE_SIZEoption = Console::ReadLine();
//Char wh=CACHE_SIZEoption->ToChar();
switch(CACHE_SIZEoption[0])
{case 'a':{
size= 1024;
break;}
case 'b':{
size=2048;
break;}
case 'c':{size= 4096;
break;}
case 'd':{size=8192;
break;}
default: {Console::WriteLine("Wrong Input");}
}
#define CACHE_SIZE size
long tags[CACHE_SIZE];
错误出现在最后一行,“long tags[CACHE_SIZE]”
expected constant expression
cannot allocate an array of constant size 0
请告诉是否有其他方法可以做这件事
最佳答案
数组必须具有编译时固定大小。如您所见,size
变量在运行时会根据 CACHE_SIZEoption[0]
的值而变化。相反,您应该使用运行时大小的容器,例如 std::vector
。
std::vector<long> tags(size);
请注意,您的 #define
可能没有按照您的预期进行。宏在预处理阶段被扩展。如果您在代码中的其他任何地方使用 CACHE_SIZE
,在编译代码之前它将被替换为 size
。如果那些地方没有 size
变量,你会得到一个错误。它不会在您的代码中将 CACHE_SIZE
设置为 size
的值。
关于c++ - 根据用户输入定义缓存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358204/