奇怪的错误:标签'loopend'使用但未定义," if "之前应为非限定 id("goto"和" '}' token "错误相同
Strange error: label 'loopend' used but not defined, expected unqualified-id before " if " (same error for "goto" and " '}' token "
这是我的代码。我不确定为什么会出现这些错误,我尽可能彻底地查看了。
我知道第一个错误似乎是因为我的"loopend:"标签而发生的在我的程序结束时似乎太远了什么。这是一个可能的原因吗?
至于其余的,我不知道它们为什么会弹出。
这似乎是" if(Choice=="OSI")"区域之后的问题。
#include "stdlib.h"
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
int main() {
ifstream pswdchk ("OSIUser.setting");
string Password[5];
string Passload[5];
string NormPass;
string tocmd;
int Chickenvar=0;
int CMD=1;
string Choice;
string Title;
string style = "-";
string Bdr = "";
string Columnten = "";
string Columnten1 = "";
string Columnten2 = "";
string WaitColumn = "";
std::string opt1;
std::string opt2;
std::string opt3;
std::string opt4;
std::string opt5;
std::string opt6;
loop:
system("color 3b");
if(CMD==0) {
cout <<"Invalid Command.nn>";
}
if (Chickenvar==1) {
cout << "nnChicken 'style' to chicken a stylish chicken test. Chicken 'exit' to chickennprogram. KFC is love, KFC is life.nnCHICKEN GOES HERE>";
}
if (CMD==1) {
if (Chickenvar==0) {
cout <<"OBCLS Version 0.3nType exit to quit.nn>";
}
}
CMD=0;
cin >>Choice;
if(Choice=="exit") {
goto loopend;
}
if(Choice=="style") {
using namespace std; //It seems I need it here too?
CMD=1;
system("color 2e");
system("CLS");
opt1 = "n1: Style 1";
opt2 = "n2: Style 2";
opt3 = "n3: Style 3";
opt4 = "n4: Style 4";
opt5 = "n5: Style 5";
opt6 = "n6: No Style";
std::cout << "Hello!" << "nThis is a test of the OIS Styling System..." << "nChoose a style:" << opt1 << opt2 << opt3 << opt4 << opt5 << opt6 <<"n";
std::string Choice = "";
ChoiceRetry:
cout << "n>";
cin >> Choice;
if (Choice == "6") {
cout << "Viewing styleless window:nn";
goto ChoiceYes;
}
cout << "nn";
if (Choice == "1") {
Columnten = "----------";
Columnten1 = " ----------";
Columnten2 = "---------";
Bdr = "| ";
WaitColumn = " ---------PRESS--ENTER--------";
style = "1";
goto ChoiceYes;
}
if (Choice == "2") {
Columnten = " ";
Columnten1 = "o ";
Columnten2 = " o";
Bdr = " ";
WaitColumn = "o PRESS ENTER o";
style = "2";
goto ChoiceYes;
}
if (Choice == "3") {
Columnten = "//////////";
Columnten1 = "//////////";
Columnten2 = "//////////";
Bdr = "/";
WaitColumn = "/////////PRESS ENTER/////////";
style = "3";
goto ChoiceYes;
}
if (Choice == "4") {
Columnten = "==========";
Columnten1 = "==========";
Columnten2 = "==========";
Bdr = "=";
WaitColumn = "=========PRESS==ENTER=========";
style = "4";
goto ChoiceYes;
}
if (Choice == "5") {
Columnten = "##########";
Columnten1 = " #########";
Columnten2 = "######### ";
Bdr = "#";
WaitColumn = " ####### PRESS ENTER ####### ";
style = "5";
goto ChoiceYes;
}
cout << "Invalid input.";
goto ChoiceRetry;
ChoiceYes:
Title = " EXAMPLE: ";
//string ColumnTitle = Columnten1, Title, Columnten2;(USE COUT)
//string Column = Columnten1, Columnten, Columnten2; (USE COUT)
cout << Columnten1<< Title<< Columnten2 << "n" ;
string TYPE = "This is an example window ";
cout << Bdr<< TYPE<< Bdr<< "n";
TYPE = " for style ";
cout << Bdr<< TYPE<< style ;
TYPE = ". ";
cout << TYPE<<Bdr<< "n";
cout << WaitColumn;
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
system("CLS");
}
if (Choice=="Chicken"){
if(Chickenvar==0){
Chickenvar=1;
cout<<"Chicken Mode Enabled";
goto Chicken_toggle_end;
}
if(Chickenvar==1){
Chickenvar=0;
goto Chicken_toggle_end;
cout<<"Chicken Mode Disabled";
}
Chicken_toggle_end:
CMD=1;
goto loop;
}
if (Choice=="cmd"){
system("CLS");
system("color 6e");
cout <<"This will not work on systems with a disabled command promptnn";
system("cmd");
CMD=1;
system("CLS");
}
if (Choice=="help"){
CMD=1;
cout<<"To run commands using CMD, type 'cmd'.nTo test the styling system, type 'style'.nTo exit the program, type 'exit'.nTo run the GUI, type 'OSI'.nn";
}
if (Choice=="OSI"){
Styleloop:
system("CLS");
system("color 2a");
cout<<"nnChoose the system style.nEnter 1-5, 6 for no style:";
cin>>Choice;
if (Choice == "1") {
Columnten = "----------";
Columnten1 = " ----------";
Columnten2 = "---------";
Bdr = "| ";
WaitColumn = "- - - - - - - - - - - - - - - - - - - - - - - - - ";
style = "1";
goto Styleend;
}
if (Choice == "2") {
Columnten = " ";
Columnten1 = "o ";
Columnten2 = " o";
Bdr = " ";
WaitColumn = "o o";
style = "2";
goto Styleend;
}
if (Choice == "3") {
Columnten = "//////////";
Columnten1 = "//////////";
Columnten2 = "//////////";
Bdr = "/";
WaitColumn = "////////////////// ++++ ////////////////";
style = "3";
goto Styleend;
}
if (Choice == "4") {
Columnten = "==========";
Columnten1 = "==========";
Columnten2 = "==========";
Bdr = "=";
WaitColumn = "================================================";
style = "4";
goto Styleend;
}
if (Choice == "5") {
Columnten = "##########";
Columnten1 = " #########";
Columnten2 = "######### ";
Bdr = "#";
WaitColumn = " ############################################## ";
style = "5";
goto Styleend;
}
if (Choice == "6") {
string style = "-";
string Bdr = " ";
string Columnten = " ";
string Columnten1 = " ";
string Columnten2 = " ";
string WaitColumn = " ";
goto Styleend;
}
goto Styleloop;
Styleend:
OSImainloop:
system("CLS");
opt1 = " ";
opt2 = " OSI v0.2.3 ";
opt3 = " ";
opt4 = " 1: Exit ";
opt5 = " 2: Log in ";
opt6 = " ";
Title=" Welcome to OSI GUI v1.0 ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter A Number:";
cin>>Choice;
if(Choice=="1"){
goto exitmain;
}
if (Choice=="2"){
goto OSImainloopbreak;
}
goto OSImainloop;
OSImainloopbreak:
OSIlogloop:
system("CLS");
opt1 = " Type exit to go back ";
opt2 = " ";
opt3 = " ";
opt4 = " - ENTER PASSWORD - ";
opt5 = " Type 'new' to create a new user. ";
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter Password:";
cin >>Choice;
if (Choice=="exit"){
goto OSImainloop;
}
if (Choice=="new"){
newuser:
system("CLS;");
opt1 = " Type exit to abort operation ";
opt2 = " ";
opt3 = " Please enter a password ";
opt4 = " for your new user. ";
opt5 = " ..... ";
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter Your New Password:";
cin >>NormPass;
if (NormPass=="new"){
system("CLS;");
opt1 = " ";
opt2 = " Sorry. This password is reserved ";
opt3 = " for the new user command. ";
opt4 = " ";
opt5 = " -Press Enter- ";
opt6 = " ";
Title=" -Error- ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"n";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
goto newuser;
}
if (NormPass=="exit"){
goto OSImainloopbreak;
}
PassGenRetry:
ofstream passgen;
passgen.open ("OSIUser.setting");
if (passgen.is_open()) {
passgen <<NormPass;
}
else {
filebadloop:
system("CLS;");
opt1 = " ";
opt2 = " The file 'Users.passwf' did ";
opt3 = " not open successfully. ";
opt4 = " A new user cannot be created. ";
opt5 = " 1=Retry 2=Abort ";
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter A Number:";
cin>>Choice;
if (Choice=="1"){
cout<<"Press Enter to attempt to open 'Users.passwf' again...";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
goto PassGenRetry;
}
if (Choice=="2"){
goto OSImainloopbreak;
}
goto filebadloop;
}
system("CLS;");
opt1 = " ";
opt2 = " Password has been successsfully installed. ";
opt3 = " Press Enter to continue. ";
opt4 = " ";
opt5 = " ..... ";
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"n";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
goto OSIlogloop;
}
Pswdchkloop:
if (pswdchk.is_open()){
for(int i = 0; i < 5; ++i){
pswdchk>>Password[i];
}
}
else {
chkbadloop:
system("CLS;");
opt1 = " ";
opt2 = " The file 'Users.passwf' did ";
opt3 = " not open successfully. ";
opt4 = " Passwords failed to load. ";
opt5 = " 1=Retry 2=Abort ";
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter A Number:";
cin>>Choice;
if (Choice=="1"){
cout<<"Press Enter to attempt to open 'Users.passwf' again...";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
goto Pswdchkloop;
}
if (Choice=="2"){
goto OSImainloop;
}
goto chkbadloop;
}
if (Choice==Password[0]){
goto OSIlogloopbreak;
}
goto OSIlogloop;
OSIlogloopbreak:
if (Chickenvar==1){
cout<<"ADMIN ENABLEDnnPress Enter";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
}
else {
cout<<"User initiated.nnPress Enter";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
}
loopmainmenu:
system("color 3b");
system("CLS;");
if (Chickenvar==1){
opt1 = " Welcome Admin v0.2.3 ";
}
else {
opt1 = " Welcome User v0.2.3 ";
}
opt2 = " Options: ";
opt3 = "-Programs ";
opt4 = "-Options ";
opt5 = "-About ";
opt6 = "-Exit ";
Title=" - Welcome - ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nChoose an option:";
cin>>Choice;
for(unsigned int n = 0; n < Choice.length(); ++n) {
Choice[n] = tolower(Choice[n]);
}
if (Choice=="exit"){
goto OSImainloop;
}
if (Choice=="about"){
system("CLS;");
system("color 7e");
opt1 = " OSI GUI and Command Shell ";
opt2 = " System ";
opt3 = " ";
opt4 = " By Olivier Poirier ";
opt5 = " ";
opt6 = " ";
Title=" - About - ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"n";
std::cin.clear();
std::cin.ignore(32767, 'n');
std::cin.get();
}
if (Choice=="programs"){
prgmloop:
system("color 2a");
system("CLS");
opt1 = " ";
if (Chickenvar==1){
opt1 = " - Hidden Items Revealed -";
}
opt2 = "-Word ";
opt3 = "-Text Adventure ";
opt4 = "-Exit ";
opt5 = " ";
if (Chickenvar==1){
opt5 = "-Special Documents ";
}
opt6 = " ";
Title=" User Login Access System ";
cout << Columnten1<< Title<< Columnten2 << "n" ;
cout<< Bdr<< opt1<< Bdr<<"n";
cout<< Bdr<< opt2<< Bdr<<"n";
cout<< Bdr<< opt3<< Bdr<<"n";
cout<< Bdr<< opt4<< Bdr<<"n";
cout<< Bdr<< opt5<< Bdr<<"n";
cout<< Bdr<< opt6<< Bdr<<"n";
cout<<WaitColumn<<"nEnter Password:";
cin >>Choice;
for(unsigned int n = 0; n < Choice.length(); ++n) {
Choice[n] = tolower(Choice[n]);
}
if (Choice=="exit"){
goto loopmainmenu;
}
}
}
goto loopmainmenu;
exitmain:
CMD=1;
system("CLS");
}
if (Choice=="clear"){
CMD=1;
system("CLS");
}
goto loop;
loopend:
return 0;
}
>我将代码粘贴到VS2013中的新源文件中,然后在编辑菜单上,高级->格式文档。这样可以整理代码的缩进和布局。然后,在视觉上可以清楚地看到,您已经关闭了int main()
函数,在编译器拒绝的后面留下了此代码。您的标签loopend
位于函数外部,因此在函数内不可见。
int main() {
... ... ...
goto loopmainmenu;
exitmain:
CMD = 1;
system("CLS");
}
然后遵循这个:
if (Choice == "clear"){
CMD = 1;
system("CLS");
}
goto loop;
loopend:
return 0;
}
您需要将此代码移回 int main()
。
作为建议,您应该替换所有这些goto
语句。
if (Choice == "Chicken"){
if (Chickenvar == 0){
Chickenvar = 1;
cout << "Chicken Mode Enabled";
goto Chicken_toggle_end;
}
if (Chickenvar == 1){
Chickenvar = 0;
goto Chicken_toggle_end;
cout << "Chicken Mode Disabled";
}
Chicken_toggle_end:
CMD = 1;
goto loop;
}
成为
if (Choice == "Chicken"){
if (Chickenvar == 0){
Chickenvar = 1;
cout << "Chicken Mode Enabled";
}
if (Chickenvar == 1){
Chickenvar = 0;
cout << "Chicken Mode Disabled";
}
CMD = 1;
}
而不是goto loop
将逻辑放在while
循环中。 Goto
逻辑很难理解。
你的程序中有太多的}
,这意味着包括if (Choice=="clear"){
和之后的所有内容都在main
之外。
如果你缩进你的代码,这会更清楚,如果你使用函数来拆分你的代码并且没有使用那么多的gotos,那就更清楚了。
相关文章:
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 方法内部但循环仍得到预期的不合格id错误C++
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 错误:令牌 { '{' 之前应存在非限定 ID
- DCMTK 了解"DIMSE 没有有效的演示上下文 ID"错误
- 解析问题 - 预期的非限定 ID - #include <array> 编译错误
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- C++中的"expected unqualified-id"错误是什么?
- 为什么我收到错误消息,在'for'之前应收到非限定 id
- C++错误:'else'之前应存在非限定 ID
- "Extern"对象问题:错误:Id 返回 1 个退出状态
- 令牌 C++ 错误之前'['非限定 ID
- gcc 发出了与解析新表达式中的类型 ID 相关的错误
- 为什么错误"permission denied","id returned 1 exit status"仅在 IM 使用 C++ 中的头文件 fstream 时才出现
- c++ for 循环中预期的非限定 id 错误
- 如何找到 NVIDIA OpenGL 驱动程序的错误 ID 名称?
- 错误 (Id) 返回 1 个退出状态
- 开发人员在Dev C 中编译代码时,我会收到此错误:[错误] ID返回1退出状态
- 意外错误ID -不确定原因(c++)
- C++错误:"("令牌之前应存在非限定错误 ID