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命令做些什么。有人可以帮忙吗?
答案 0 :(得分:1)
在C和C ++中,所有内容都应在使用前声明或定义。当编译器找到以前从未见过的标识符时,就像mscp_commands
中的c = mscp_commands;
一样,它会发出错误。您需要移动mscp_commands
的定义或至少将其声明为
extern struct command mscp_commands[];
使用此标识符之前。
这些语言具有“前向声明”的概念。此类声明表示名称Blah
是结构或枚举,但未提供任何进一步的详细信息。但至少应该存在这种情况。否则是语法错误。在您的示例中,command
没有任何内容。
答案 1 :(得分:0)
移动
struct command mscp_commands[] = {
};
在cmd_help
函数之前。