第一部分 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;
}

 

 
 
 
posted @ 2015-05-24 00:14  N-eal  阅读(597)  评论(0编辑  收藏  举报