相关疑难解决方法(0)

在C中,大括号是否作为堆栈框架?

如果我在一组新的花括号中创建一个变量,那个变量是从结束括号上的堆栈中弹出的,还是会挂起直到函数结束?例如:

void foo() {
   int c[100];
   {
       int d[200];
   }
   //code that takes a while
   return;
}
Run Code Online (Sandbox Code Playgroud)

会不会d是在占用内存code that takes a while部分?

c memory stack

152
推荐指数
4
解决办法
9357
查看次数

在switch语句中声明变量

我看到了这个问题的一些答案,我明白了 - 你不能在一个内部声明和分配变量switch.但我想知道以下是否正确抛出错误说

错误:'int'之前的预期表达式

码:

switch (i) {
    case 0:
        int j = 1;
        break;
}
Run Code Online (Sandbox Code Playgroud)

为什么NSLog()在它之前拨打电话会导致没有错误?

switch (i) {
    case 0:
        NSLog(@"wtf");
        int j = 1;
        break;
}
Run Code Online (Sandbox Code Playgroud)

c variables declaration objective-c switch-statement

114
推荐指数
2
解决办法
3万
查看次数

在case语句中使用{}.为什么?

什么是使用点{}在一个case声明?通常,无论case语句中有多少行,都会执行所有行.这只是关于旧/新编译器的规则还是有背后的东西?

int a = 0;
switch (a) {
  case 0:{
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

int a = 0;
switch (a) {
  case 0:
    std::cout << "line1\n";
    std::cout << "line2\n";
    break;
}
Run Code Online (Sandbox Code Playgroud)

c++ switch-statement

100
推荐指数
3
解决办法
7101
查看次数

注释掉未使用的行后,开关案例将无法编译

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int main (void) {

  struct addrinfo hints; 
  memset (&hints, 0, sizeof hints);

  hints.ai_family = AF_UNSPEC; 
  hints.ai_socktype = SOCK_DGRAM;  
  hints.ai_flags = AI_CANONNAME;   

  struct addrinfo *res;

  getaddrinfo ("example.com", "http", &hints, &res);
  printf ("Host: %s\n", "example.com");

  void *ptr;

  while (res != NULL) {
    printf("AI Family for current addrinfo: %i\n", res->ai_family);
    switch (res->ai_family) {
      case AF_INET:
        ptr = (struct sockaddr_in *) res->ai_addr;
        struct sockaddr_in *sockAddrIn = (struct sockaddr_in *) …
Run Code Online (Sandbox Code Playgroud)

c

82
推荐指数
2
解决办法
4507
查看次数

编译错误:切换,"预期表达式之前"

切入追逐我已经重新创建了我的问题,因为它是相当自我解释的.

这符合,没有错误:

switch (n) {
    case 1:
        NSLog(@"");
        NSString *aStr;
        break;
    default:
        break;
    }
Run Code Online (Sandbox Code Playgroud)

这编译错误,它只缺少NSLog():

switch (n) {
    case 1:
        NSString *aStr;
        break;
    default:
        break;
    }
Run Code Online (Sandbox Code Playgroud)

它在编译时出现错误"NSString'之前的预期表达式 "

我在这里错过了什么吗?

iphone xcode cocoa objective-c xcode3.2

78
推荐指数
2
解决办法
4万
查看次数

在Switch Case语句中出现重复的Const声明错误

我有以下代码,我收到错误'Duplicate Declaration query_url'.

  switch(condition) {
    case 'complex':
      const query_url = `something`;
      break;
    default:
      const query_url = `something`;
      break;
  }
Run Code Online (Sandbox Code Playgroud)

我知道query_url被声明了两次,这是不对的.但我不知道如何解决这个问题.有人可以帮助确定这项工作的正确方法吗?

javascript ecmascript-6

63
推荐指数
4
解决办法
2万
查看次数

'case'标签跳过'element'的初始化

我不明白为什么我收到错误:

'case'标签跳过'element'的初始化.

有人可以向我解释一下吗?

void LinkedList::process_example(int choice) {
    switch(choice) {
    case 1:
        cout << endl << endl << "Current S = ";
        this->printSet();

        cout << "Enter an element :";
        char* element = "lol";

        //cin>>element;
        cin.clear();
        cin.ignore(200, '\n');

        this->Addelementfromback(element); //error is here
        cout << endl << endl << "Current S = ";

        this->printSet();
        break;

    case 2:
        this->check_element();
        break;

    case 3:
        cout << endl << endl;
        cout << "Current Set S = ";
        this->printSet();

        cout << endl << "S has ";
        int count …
Run Code Online (Sandbox Code Playgroud)

c++ debugging

61
推荐指数
2
解决办法
6万
查看次数

我可以在Objective-C switch语句中声明变量吗?

我想我会失明,因为我无法弄清楚此代码中语法错误的位置:

if( cell == nil ) {
    titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
        reuseIdentifier:CellIdentifier ] autorelease
    ];

    switch( cellNumber ) {
        case 1:
            NSString *viewDataKey = @"Name";
etc...
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我在最后一行的'*'标记之前收到错误:语法错误.

对不起这个基本问题,但我错过了什么?

objective-c switch-statement

57
推荐指数
2
解决办法
2万
查看次数

在switch-case中使用花括号时的'break'语句

我在C/Objective-C/C++中使用大括号和我的所有switch case语句

直到不久之前,我还没有考虑过break;在括号内加入声明是好还是坏.我怀疑它没关系,但我认为它仍然值得问.

    switch (foo) {
        case 1: {
            // stuff
            break;
        }

        default: {
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

VS

    switch (foo) {
        case 1: {
            // stuff
        } break;

        default: {
            // stuff
        } break;
    }
Run Code Online (Sandbox Code Playgroud)

c coding-style curly-braces switch-statement

39
推荐指数
3
解决办法
2万
查看次数

声明/定义为C和C++中的语句

当这不能在C中编译时我很困惑:

int main()
{
    for (int i = 0; i < 4; ++i)
        int a = 5; // A dependent statement may not be declaration

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我已经习惯了将要编译的C++.我只是愣了一会儿,直到我记得这里的答案是关于如何在C和C++中将不同的东西视为"陈述".这是关于switch语句的.for循环括号后面的"语句"必须同时出现在C和C++中.这可以在添加分号或创建{}波浪形支架块的情况下完成.

在C++中"int a = 7;" 被视为声明,定义和初始化.CI认为它也被认为是所有这些,但在C中它不被视为"声明".

有人可以准确地澄清为什么在C中这不是一个陈述,而在C++中它是?这让我对一个陈述的概念感到困惑,因为一种语言说的是,而另一种语言则说不是,所以我有点困惑.

c c++ if-statement language-lawyer

38
推荐指数
3
解决办法
2673
查看次数