当在不同大小写的情况下声明相同的变量名时,为什么会收到警告。
switch()
{
case 1:
int a;
break;
case 2:
int a;
break;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有警告的情况下执行此操作。(不将其放在开关前)
有时Xcode会在案例后的行上显示错误" 预期表达式 ".例如,Xcode指向带有红色箭头的UserContentViewController:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case IndexVideo:
UserContentViewController* detailViewController = [[UserContentViewController alloc] initWithUser:self.user];
[self.navigationController pushViewController:detailViewController animated:YES];
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在我的案子周围放置括号,错误就消失了.首先,我想知道不使用大括号的问题是什么.在任何其他语言的情况下,我从未使用大括号.其次,为什么Xcode只会在极少数情况下抱怨我的案件?我无法辨别哪种类型的代码会触发此错误.
我switch在我的C++代码中有一个语句,并且想在该语句中声明并使用一个变量case.该变量仅在该特定范围内使用case.
switch(mode)
{
case abc:
...
struct commonData;
commonData = manager->getDataByIndex(this->Data.particularData);
int someInt = 1;
...
break;
case xyz:
...
commonData = Manager->getDataByIndex(this->Data.particularData);
break;
default:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
我试过简单地声明,初始化和使用变量(int someInt)就在里面case,但这给了我一些编译错误......在SO上遇到这个问题:为什么变量不能在switch语句中声明?,我尝试做了答案的建议,并添加{}到case问题中,所以我switch现在看起来像这样:
switch(mode)
{
case abc:
{
...
struct commonData;
commonData = manager->getDataByIndex(this->Data.particularData);
int someInt = 1;
...
break;
}
case xyz:
...
commonData = manager->getDataByIndex(this->Data.particularData);
break;
default:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
但我现在收到编译错误,说明:在一个变量(commonData)的"未声明的标识符",在该 …
这是仅使用空白方法就会发生的正常错误吗?顺便说一句,我使用了自定义 Makefile。
case MODE: //mode is just an enum stackoverflow
printf("");
char temp = '5';
Run Code Online (Sandbox Code Playgroud)
CSftp.c:335:9: 错误:预期表达式 char temp = '5';
删除 printf(""); 导致错误出现。或者这是来自遥远问题的症状。
码:
int main()
{
int a=1;
switch(a)
{
int b=20;
case 1:
printf("b is %d\n",b);
break;
default:
printf("b is %d\n",b);
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:当b的声明发生在这里时,它为b打印一些垃圾值为什么b在这里没有用20初始化?
我在这个NSString中下面代码的第一行的switch语句中得到一个"预期表达式"错误: NSString *emailTitle = @"some text";
break;
case 4:
// mail
// Email Subject
NSString *emailTitle = @"some text";
// Email Content
NSString *messageBody = @"http://www.example.com/";
// To address
NSArray *toRecipents = [NSArray arrayWithObject:@""];
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL];
break;
case 5:
Run Code Online (Sandbox Code Playgroud)
没有这段电子邮件代码,switch语句可以正常工作.
谢谢你的帮助
我在这个棒球计算器中的switch语句出错了.错误说:"控制转移绕过初始化:"
switch语句用于您希望在此程序中执行的计算类型,例如:
在基本百分比击球平均值等...
// Baseball Stat.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
char menu_choice;
// Batting average formula.
float b_average(float hits, float bats) {return hits/bats;};
// On base percentage formula
float OBP(float hits, float walks, float Hit_by_Pitch, float bats, float sac_flys) {return (hits+walks+Hit_by_Pitch) / (bats+walks+Hit_by_Pitch+sac_flys);};
// Strikeout Ratio Formula
float Strikeout_ratio(float strikeouts, float bats) {return strikeouts/bats;};
// Fielding Average Formula
float fielding_average(float putouts, float assists, …Run Code Online (Sandbox Code Playgroud) 我坚持使用我正在用Xcode编写的C程序.经过几个小时的工作后,Xcode突然开始抱怨"预期的表达"消息:
switch(cmd) {
case 'S':
state = sstart;
accpos = accmax = varnum = 0;
inquote = inddstar = false;
break;
case 'L':
char c; // *** expected expression
int i = 0;
bool processed;
while( (c = buff[i++]) != '\0') {
acc[accmax++] = c;
Run Code Online (Sandbox Code Playgroud)
之后Xcode抱怨说,只要使用c,就不会定义变量c.
我在Xcode中试过"show invisibles"无济于事.使用clang或gcc手动编译程序会给出相同的错误消息.
在预处理器步骤之后,这部分代码如下所示(使用clang -E获得):
switch(cmd) {
case 'S':
state = sstart;
accpos = accmax = varnum = 0;
inquote = inddstar = 0;
break;
case 'L':
char c;
int i = 0; …Run Code Online (Sandbox Code Playgroud) 我正在编写一些 Win32 程序,遇到一个小问题,为什么我无法在 switch case 块中初始化变量。
就像这样:
当我这样做的时候,那就没问题了。
现在我想知道为什么。
我发现了一个具有以下语法的C++代码:
void MyClass::method()
{
beginResetModel();
{
// Various stuff
}
endResetModel();
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么有{ }一个行结束后;但似乎没有问题使其编译和运行.是否有可能这与代码可能是异步的事实有关(我还不确定)?或者也许{ }只是在这里划分代码的一部分,并没有真正有所作为,但说实话,我怀疑这一点.我不知道,有人知道这个语法是什么意思吗?
更多信息:没有其他参考beginResetModel,resetModel或ResetModel整个项目(用grep搜索).顺便说一下这个项目是Qt之一.也许这是我没有听说过的另一个与Qt相关的宏.