繁体   English   中英

使用未声明的标识符

[英]use of undeclared identifier

static void cmd_help(char *dummy)    
{

    struct command *c;
    puts("commands are:");
    c = mscp_commands;
    do {
          printf("%-8s - %s\n", c->name ? c->name : "", c->help);
    } while (c++->name != NULL);

}

struct command mscp_commands[] = {
    ....
};

我正在尝试将程序从C转换为C ++。 限定条件是它可以通过g ++进行编译;

我收到此错误:

错误:使用未声明的标识符'mscp_commands'c = mscp_commands;

我在想它必须做一些无法“看到” struct命令的功能。 有人可以帮忙吗?

在C和C ++中,应在使用前声明或定义所有内容。 当编译器发现它并没有见过之前,像你的一个标识符mscp_commandsc = mscp_commands; 它发出一个错误。 您需要向上移动mscp_commands定义,或者至少像这样声明它

extern struct command mscp_commands[];

在使用此标识符之前。

这些语言具有“向前声明”的概念。 这些声明说Blah名称是结构或枚举,没有提供任何进一步的细节。 但是至少应该存在。 否则,这是语法错误。 在您的示例中,与command无关。

移动

struct command mscp_commands[] = {

};

cmd_help函数之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM