一、枚举
代码事例:
#include <stdio.h> void test() { // 定义一种枚举类型 enum Season {spring, summer, autumn, winter}; // 定义一个枚举变量s enum Season s = winter; } void test1() { // 定义枚举类型的同时定义一个枚举变量s enum Season {spring, summer, autumn, winter} s = spring; } void test2() { enum {spring = 3, summer, autumn, winter} s = winter; printf("%d", s); } int main(int argc, const char * argv[]) { //test(); //test1(); test2(); return 0; }
二、extern和变量
代码事例:
#include <stdio.h> // 第一种做法是将a定义在main函数的前面 // int a; // 完整地声明全部变量a // extern int a; // extern是可以省略的 int a; int a; int a; int a; void test(); int main(int argc, const char * argv[]) { // 还是全局变量 // extern int a; int a; a = 10; test(); return 0; } // 定义一个变量a int a; void test() { printf("a = %d", a); }
全局变量的赋值
main.c
#include <stdio.h> void testA(); //int a; // //int a; // //int a; // extern只能用来声明全部变量,不能拿来定义变量 extern int a; int main(int argc, const char * argv[]) { // 修改main.c中的a a = 10; // 调用onec.c中的testA函数 testA(); return 0; }
one.c
#include <stdio.h> // 如果在不同的源文件中,存在同名的全局变量,那么这些变量都代表着同一个变量 int a; // 默认情况下定义的变量,都是外部变量 //int a; // //int a; void testA() { printf("one.c中的a=%d\n", a); }
三、extern与函数
one.h
#ifndef extern____one_h #define extern____one_h // 完整地声明一个函数,需要用到extern关键字,表示引用一个外部函数 // extern void one(); // 其实extern又是废的,所以可以省略 void one(); #endif
one.c
#include <stdio.h> // 定义一个one函数 // 完整地定义一个外部函数需要extern关键字 //extern void one() { // printf("调用了one函数\n"); //} // 默认情况下就是外部函数,所以可以省略extern void one() { printf("调用了one函数\n"); }
main.c
#include <stdio.h> #include "one.h" int main(int argc, const char * argv[]) { one(); return 0; }