我在我的程序中使用了int类型的lenA和lenB。当我将此变量传递给consensus_a[]或consensus_b[]时,显示了以下错误:
expression must have a constant value.如何将这些变量(lenA或lenB)传递给char consensus_a[]或consensus_b[]。
我的程序中的一小部分:
int lenA=10, lenB=15;
char consensus_a[lenA],consensus_b[lenB];发布于 2013-03-04 01:35:30
您可能正在运行一个不符合C99的编译器(可能是因为它比这个版本旧)(如前所述,代码应该使用符合C99的编译器进行编译)。
使用这些编译器,对于表单中的数组
char a[x];x需要是常量。
你可以使用 const**:**
const int lenA=10, lenB=15;
char consensus_a[lenA],consensus_b[lenB];或 enum**:**
enum
{
lenA = 10,
lenB = 15
};
char consensus_a[lenA], consensus_b[lenB];或 #define**:**
#define lenA 10
#define lenB 15
char consensus_a[lenA], consensus_b[lenB];malloc 或(如果您不希望它们为常量):
char *consensus_a = malloc(lenA),
*consensus_b = malloc(lenB);从技术上讲,应该是:
char *consensus_a = malloc(lenA*sizeof(char)),
*consensus_b = malloc(lenB*sizeof(char));但是sizeof(char)是1,所以没有必要包含这个术语。
当使用malloc**,时,记得在使用它们之后** free :
free(consensus_a);
free(consensus_b);发布于 2013-03-04 01:31:15
你的编译器抱怨你试图声明一个可变长度的数组。对于不符合C99标准或更新版本的编译器来说,这是不可能的。使用常量值而不是lenA/lenB。
https://stackoverflow.com/questions/15188426
复制相似问题