我在编译这段特殊代码时遇到了一些麻烦,
#include<iostream>
#include<conio.h>
#pragma hdrstop
using namespace std;
#include <tchar.h>
void mark(int)
//---------------------------------------------------------------------------
#pragma argsused
int_tmain(int argc, _TCHAR* argv[])
{
cout << " Enter a Students Mark: ";
cin >> mark;
if (mark >= 80 )
cout << "A" ;
else
if (mark >= 65)
cout << " B" ;
else
if (mark >= 50 )
cout << "c";
else
{
numberFailed += 1;
if (mark >= 40 )
cout << "D"
else
cout << "E";
}
getch();
return 0;
}
//---------------------------------------------------------------------------
如果有人能指出我正确的方向,那将是非常感激的。 Embarcadero的编译器突出显示以下行 int_tmain(int argc,_TCHAR * argv [])
并给我错误信息[bcc32错误]学生Marks.cpp(18):E2141声明语法错误
我迷失了。
答案 0 :(得分:1)
您提出的问题是:
void mark(int)
//---------------------------------------------------------------------------
#pragma argsused
int_tmain(int argc, _TCHAR* argv[]) // This line here
第一行是函数声明,需要用分号终止。因为后面的行是注释和预处理器指令,所以编译器在遇到main
定义之前不知道任何错误。
天真的解决方案是添加分号(以及修复同样被破坏的main
定义):
void mark(int);
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, _TCHAR* argv[])
但是,查看代码的其余部分,很清楚mark
根本不是函数。它是一个整数。因此,您应该完全删除该行,并在mark
函数中声明main
:
int main(int argc, _TCHAR* argv[])
{
int mark = 0;
int numberFailed = 0;
cout << " Enter a Students Mark: ";
cin >> mark;
if (mark >= 80 )
cout << "A" ;
else if (mark >= 65)
cout << " B" ;
else if (mark >= 50 )
cout << "C";
else
{
numberFailed++; ///< You don't actually use this value
if (mark >= 40 )
cout << "D"
else
cout << "E";
}
getch();
return 0;
}
注意我还添加了您忘记申报的numberFailed
。而且,当你宣布它们时,总是将你的价值观初始化,这是一个很好的做法,这将为你节省一些眼泪。
答案 1 :(得分:0)
我想你想要这样的东西(只是一个想法):
{{1}}