首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“.”之前构建错误-预期的主表达式。令牌

在“.”之前构建错误-预期的主表达式。令牌
EN

Stack Overflow用户
提问于 2020-06-29 09:32:23
回答 1查看 782关注 0票数 1

我试图在这个程序这里上运行make命令,但是我遇到了一个可能与C++相关的错误。此错误如下所示:

代码语言:javascript
复制
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中相关行的片段:

代码语言:javascript
复制
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++。你知道我怎么能解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-29 09:38:19

在很长一段时间内,使用指示符来初始化结构具有C的特性,但只有在C++20迭代时才进入C++

因此,您需要确保有一个能够处理C++20的编译器。

根据您使用的工具链,您可能需要特定的版本,例如:

  • gcc 8+,与--std=c++20为gcc10,--std=c++2a为gcc 8/9;
  • clang 10+,--std=c++20
  • 微软VS2019 16.1+,与/std:c++latest/std:c++20 (最终)。

考虑到您所得到的错误,我怀疑您可能没有这样的错误,或者它的配置方式有问题(比如不正确的标准规范)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62635187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档