所以我这是一个示例代码。我刚刚开始使用Visual C ++ 2010 Express Edition,并且我一直在和其他人一起得到这个错误,但这让我很烦恼。
程序9.cpp(15):错误C2146:语法错误:在标识符''之前缺少')'
这是我的代码:
#include <iostream>
#include <conio.h>
#include <string>
#include <string.h>
using namespace std;
class Salesman
{
char name[26];
float total_sales;
public:
Salesman (char *s, float f)
{
strcpy(name s); //Error occurs here. :(
total_sales=f;
}
void prnobject (void)
{
cout<<this->name;
cout<<"\tHas invoked probject: \n";
}
};
void main()
{
clrscr();
salesman Raman ("Raman", 21450), Sita ("Sita", 23190), Vedant ("Vedant", 19142);
Raman.prnobject();
Sita.prnobject();
Vedant.prnobject();
getch();
}
答案 0 :(得分:7)
你需要一个逗号:
strcpy(name, s);
C ++要求您使用逗号分隔您的参数 - 您不能仅使用分隔参数的空格列出名称。
答案 1 :(得分:4)
strcpy(name, s);
^^^
你错过了逗号。
答案 2 :(得分:3)
更改strcpy(name s); //Error occurs here. :(
要
strcpy(name, s);
不推荐评论。
答案 3 :(得分:2)
当编译器抱怨丢失或意外标点符号时,或建议您将某些字符放在某些位置时,您会出现语法错误。但是,不要过多努力将精确的错误消息安装到代码中。你会感到沮丧和困惑。相反,假装编译器给出了一个更通用的错误消息,只是告诉你该行某处的语法错误 。然后使用您自己的C ++语法知识自行查找并更正错误。 (该错误实际上可能位于较早的行;例如,如果省略分号或右括号,编译器通常会在文件的后面突出显示一行。)
我怀疑你专注于弄清楚缺失的括号应该去哪里。如果没有在你的脑海中植入这个建议,你可能会自己想出你实际上错过了两个函数参数之间的逗号:
strcpy(name, s);
编译器建议使用括号,因为右括号是最佳猜测,这将使代码在该点处在语法上有效。编译器还没有进行语义分析来确定strcpy
是一个需要两个参数的函数,并且它还没有读到足够的时间来识别行后面的右括号,所以它不知道一个逗号将是修复错误的更好建议。编译器建议修复最基本的错误所需的最小更改,它可以检测到它到目前为止读取的代码量。