Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

代码课中 C 语言变量名等价测试注意事项 #17

Open
memory-overflow opened this issue May 11, 2016 · 0 comments
Open

代码课中 C 语言变量名等价测试注意事项 #17

memory-overflow opened this issue May 11, 2016 · 0 comments

Comments

@memory-overflow
Copy link

memory-overflow commented May 11, 2016

C 语言在开发测试的时候应该避免的写法

1 函数内部声明

有问题的写法

int main() {
    int sum(int x,int y);
    sum(1, 2);
    return 0;
}
int sum(int x,int y) {
    return x + y;
}

正确写法

int sum(int x,int y);
int main() {
    sum(1, 2);
    return 0;
}
int sum(int x,int y) {
    return x + y;
}

2 structunion 镶嵌定义 和 重复定义

有问题的写法

//  重复定义
struct Point {
    int x,y;
};
int main() {
    struct Point {
        int st,en;
    };
    return 0;
}
//镶嵌定义
struct Point {
    struct node {
        int a,b;
    };
};
int main() {
    return 0;
}

3 enum 的名称的重复定义

有问题的写法

enum day{
    Monday = 0,
    Tuesday = 1,
};
int main() {
    enum day {
        Wednesday = 2,
        Thursday = 3,
    };
    return 0;
}

建议的写法

enum day{
    Monday = 0,
    Tuesday = 1,
};
int main() {
    enum {
        Wednesday = 2,
        Thursday = 3,
    };
    return 0;
}

4 typedef 定义的类型名不要在用作其他变量

有问题的写法

typedef double INT;
int main() {
    typedef int INT;
    return 0;
}
typedef double INT;
int main() {
    int INT = 0;
    return 0;
}

5 千万千万不要用 #define

目前语法解析错误的代码

#define INT int
int main() {
    INT x = 0;
    return 0;
}

6 main函数不要声明

int main();
int main() {
    return 0;
}

7 一种古老的函数定义 还没有处理

int sum(x,y)
int x,y; 
{
      return 0;
}

已经处理的情况

  • 变量名可以任意等价,包括不同作用域重复定义的变量(除了上面提到的 typedef 的情况外)
  • 函数名和函数参数名等价 (除了上面提到的内部声明的情况)
  • structunion 内部成员变量等价
  • label(标签)的等价
  • enum 定义的变量等价
  • typdef 自定义类型名等价。

最后建议结构体不要定义在函数内部。

@buaabarty buaabarty changed the title c语言变量名等价注意事项 代码课中 C 语言变量名等价测试注意事项 May 11, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant