我试图在这个程序这里上运行make命令,但是我遇到了一个可能与C++相关的错误。此错误如下所示:
make
[ 7%] Building CXX object CMakeFiles/m3vcftools.dir/src/Main.cpp.o
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:26: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:27: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:28: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:31: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:32: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:33: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:35: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:36: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:37: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:39: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:40: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:41: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:43: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:44: error: expected primary-expression before '.' token
/hpc/home/lsiwzyj/programs/m3vcftools/src/Main.cpp:45: error: expected primary-expression before '.' token
make[2]: *** [CMakeFiles/m3vcftools.dir/src/Main.cpp.o] Error 1
make[1]: *** [CMakeFiles/m3vcftools.dir/all] Error 2
make: *** [all] Error 2下面是main.cpp中相关行的片段:
static void usage(FILE *fp);
//const char* createCommandLine(convert_args_t *args, const char *optionName);
int main_m3vcfconcat(int argc, char *argv[]);
int main_m3vcfcompress(int argc, char *argv[]);
int main_m3vcfconvert(int argc, char *argv[]);
typedef struct
{
int (*func)(int, char*[]);
const char *alias, *help;
}
cmd_t;
static cmd_t cmds[] =
{
{ .func = NULL,
.alias = "M3VCF manipulation",
.help = NULL
},
{ .func = main_m3vcfcompress, //main_vcfannotate,
.alias = "compress",
.help = "compress VCF file to M3VCF",
},
{ .func = main_m3vcfconcat, //main_vcfconcat,
.alias = "concat",
.help = "concatenate M3VCF files from the same set of samples"
},
{ .func = main_m3vcfconvert, //main_vcfconvert,
.alias = "convert",
.help = "convert M3VCF files to different formats and back"
},
{ .func = NULL,
.alias = NULL,
.help = NULL
}
};不过,我担心更改Main.cpp中的任何行,并且不熟悉C++。你知道我怎么能解决这个问题吗?谢谢。
发布于 2020-06-29 09:38:19
在很长一段时间内,使用指示符来初始化结构具有C的特性,但只有在C++20迭代时才进入C++。
因此,您需要确保有一个能够处理C++20的编译器。
根据您使用的工具链,您可能需要特定的版本,例如:
--std=c++20为gcc10,--std=c++2a为gcc 8/9;--std=c++20;/std:c++latest或/std:c++20 (最终)。考虑到您所得到的错误,我怀疑您可能没有这样的错误,或者它的配置方式有问题(比如不正确的标准规范)。
https://stackoverflow.com/questions/62635187
复制相似问题