我刚刚学习 C++,刚从 python3 和 QBASIC 出来,并且很难阅读编译器错误并理解它们,这使得调试变得困难。
\n\n我遇到的问题是我不断拉出编译错误:
\n\n错误:预期的不合格 ID
\n\n这发生在第 10 行和第 18 行。
\n\n我正在尝试使用 linuxs\' g++ 编译这个程序:
\n\ng++ proto.cpp -o prototype\nRun Code Online (Sandbox Code Playgroud)\n\n该程序的代码如下。
\n\n#include <iostream>\n#include <string>\nusing namespace std;\n//Declaring Functions\n\n//Trouble Function\nint mult ( double x, double y );\n{\n return x * y;\n}\n\n//Trouble Function\nint dive ( double x, double y );\n{\n if ( y == 0 )\n {\n cout<<"Error, cannot divide by zero.\\n";\n return;\n }\n else\n {\n return x / y;\n }\n}\n\n//This error doesn\'t occur beyond this point.\nint plus ( double x, double y );\n{\n return x + y;\n}\nint min ( double x, double y );\n{\n return x - y;\n}\n//End of global declarations.\n//I would have made them local functions if not\n//for an entirely set of unrelated problems.\n\nint main()\n{\n cout<<"Please enter two numbers.\\n"<<"\\n";\n int num1;\n int num2;\n cin>>num1;\n cin>>num2;\n string returnz = "<unknown>";\n while ( returnz != "no" )\n {\n cout<<"What would you like to do with the numbers>\\n";\n cout<<\'\\n\'<<"Enter ( mult ) to multiply, ( min ) to subtract, ( plus ) to add, and ( dive ) to divide.\\n";\n getline( cin, returnz, \'\\n\' );\n if ( returnz == "mult" )\n {\n double result = mult ( num1, num2 );\n cout<<num1<<" * "<<num2<<" = "<<result<<"\\n";\n continue;\n }\n else if ( returnz == "dive" )\n {\n double rest = dive ( num1, num2 );\n cout<<num1<<" / "<<num2<<" = "<<rest<<"\\n";\n continue;\n }\n else if ( returnz == "plus" )\n {\n double res = plus ( num1, num2 );\n cout<<num1<<" + "<<num2<<" = "<<res<<"\\n";\n continue;\n }\n else if ( returnz == "min" )\n {\n double re = min ( num1, num2 );\n cout<<num1<<" - "<<num2<<" = "<<re<<"\\n";\n continue;\n }\n else\n {\n break;\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n目标是允许用户输入几个数字,然后让他们选择在该数字上使用指定的运算符。
\n\n请注意,我是这种语言的新手,因此它可能充满语法错误和不一致。但问题是,为什么这两个(而不是其他)会提取不合格的 id,这意味着什么,以及如何解决这个问题。
\n\n我在这里问是因为我想独立学习这个,因此我也没有导师或同伴可以求助。关于如何在更有效的代码中完成此操作的建议也很受欢迎,并且将不胜感激。
\n\n谢谢。
\n\n终端中出现的错误:
\n\nproto.cpp:10:1: error: expected unqualified-id before \xe2\x80\x98{\xe2\x80\x99 token\n{\n^\n\nproto.cpp:18:1: error: expected unqualified-id before \xe2\x80\x98{\xe2\x80\x99 token\n{\n^\nRun Code Online (Sandbox Code Playgroud)\n
正如 @user657267 所说,在声明函数及其实现时去掉分号。如果你有
int some_function(int a, int b);
Run Code Online (Sandbox Code Playgroud)
在 main 之上以及该函数在 main 之下的实现
int some_function(int a, int b) {
//something happens here
return a;
}
Run Code Online (Sandbox Code Playgroud)
那就可以了。实现也可以高于主函数,这样您就不必编写定义函数的第一行。定义或实现必须高于 main 的原因是 c 或 c++,否则将无法看到该函数,否则也会引发错误。