Skip to content

Latest commit

 

History

History
47 lines (44 loc) · 966 Bytes

新特点.md

File metadata and controls

47 lines (44 loc) · 966 Bytes

新特征

1. goto 转移表 一些编译器会把switch语句、多线程转换成goto 转移表作为汇编格式

int i = 0;
static void * ptr[3]={&&label1, &&label2, &&label3};
goto *ptr[i];

label1:
printf("label1\n");
return 0;

label2:
printf("label2\n");
return 0;

label3:
printf("label3\n");
return 0;

2. 单标签case 升级 为 范围case/case范围 (多标签)

enum kind { alpha, number, white, other };
enum kind char_class(char c)
{
  enum kind result;
  switch(c) {
      case 'a' ... 'z':// case low ... high : // (包含边界值)
      case 'A' ... 'Z':
          result = alpha;// 字母
          break;
      case '0' ... '9':
          result = number;// 数字
          break;
      case ' ':
      case '\n':
      case '\t':
      case '\r':
      case '\v':
          result = white;// 空白符
          break;
      default:
          result = other;// 其他字符
          break;
  }
  return result; 
}