生成错误 - "." 标记之前的预期主表达式
build error - expected primary-expression before '.' token
我正在尝试在此程序上运行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
}
};
不过.cpp我很担心更改 Main 中的任何行,而且我不熟悉C++。你知道我该如何解决这个问题吗?谢谢。
使用指示符初始化结构在相当长的一段时间内具有C
的特性,但直到C++20
迭代时才进入C++
。
因此,您需要确保拥有能够处理C++20
的编译器。
根据您使用的工具链,您可能需要特定版本,例如:
- GCC 8+,GCC10
--std=c++20
,GCC 8/9--std=c++2a
; - 叮当 10+,带
--std=c++20
; - Microsoft VS2019 16.1+,
/std:c++latest
或/std:c++20
(最终(。
鉴于您遇到的错误,我怀疑您要么没有这样的野兽,要么它的配置方式有问题(例如不正确的标准规格(。
相关文章:
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 标记之前预期主表达式'('错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- C++初学者错误:主要表达式错误
- 代数树表达式C++错误:未解析的外部符号"Public:_thiscall AlgebraicTreeExpression::~AlgebraicTreeExpression(void) ..."
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 提升正则表达式错误:未初始化的提升::match_results
- C++比较表达式错误
- C++ "主表达式"错误
- C++ 正则表达式错误(未处理的异常)
- 'this'不能用于常量表达式错误 (C++)
- 代码块引发有关for_each的预期主表达式错误
- Boost Regex中的命名子表达式错误
- C++之前的主要表达式错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- 理解常量表达式错误
- 成员函数和预期的主表达式错误
- Xcode中应有表达式错误