第一部分 1.11 OC基础语法-枚举、extern和变量

一、枚举

代码事例:

#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;

}

 

 
 
 

你可能感兴趣的:(extern)