static和extern修饰连接属性

来源:互联网 发布:java参数传递构造函数 编辑:程序博客网 时间:2024/04/24 13:59
1. static修饰全局变量或函数,表示其只能在所在文件中使用

extern修饰变量,表示其来自于其他文件

---------------------------------------

[root@localhost cpp]# cat source.c

#include<stdio.h>

static int height = 8848; // can only be used in this file

double pi = 3.14; //can be accessed from other file under the same project

int getHeight(){ // can be accessed from other file under the same project

return height;

}

--------------------------------------------

[root@localhost cpp]# cat main.c

#include<stdio.h>

int getHeight(); //or: external int getheight;

//extern double pi;

double getArea(double diameter){

extern double pi; // putting it here is also ok

return pi * diameter * diameter / 4;

}

int main(){

int height = getHeight();

printf("Height = %d\n", height);

double diameter = 2;

double area = getArea(diameter);

printf("diameter = %f, area = %f\n", diameter, area);

return 0;

}

-------------------------------------------

编译执行:

[root@localhost cpp]# gcc source.c main.c -o main

[root@localhost cpp]# ./main

Height = 8848

diameter = 2.000000, area = 3.140000

==========================================

2. extern的另外用法是当C和C++混合编程时,如果c++调用的是c源文件定义的函数或者变量,那么要加extern来告诉编译器用c方式命名函数:

文件A.cpp调用source.c里面的变量i和函数callme()

extern "C" //在c++文件里调用c文件中的变量

{

int j;

void callme();

}

int main()

{

callme();

}

二,static法则:

A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 半夜2点肚子饿怎么办 半夜两三点饿了怎么办 科目三预约不上怎么办 心脏支架又堵了怎么办 车辆验车过期了怎么办 车辆年审过期2天怎么办 违停单子丢了怎么办 沙发弹簧包坏了怎么办 bt种子被和谐了怎么办 苹果手机id密码忘了怎么办 墙漆颜色太深了怎么办 油漆颜色太深了怎么办 墙面漆颜色太深怎么办 古代打仗牙掉了怎么办 乐视电视没声音怎么办 老公疑心病很重怎么办啊 被安装了尿道锁怎么办 狼青小狗腿罗圈怎么办 备孕期间有霉菌怎么办 虫子进皮肤里了怎么办 生完孩子肚子越来越大怎么办 怀孕8个月肚子小怎么办 孕晚期胎儿不长怎么办 肚子上肉特别多怎么办 奶堵了有硬块怎么办 便秘5天肚子胀怎么办 上火大便拉不出来怎么办 大便拉不出来肚子痛怎么办 戒奶奶涨有硬块怎么办 忌奶的时候涨奶怎么办 娃儿隔奶,,奶涨怎么办 狗肚子很大很鼓怎么办 注册不了的二建怎么办 专升本没考过怎么办 警察乱拘留人该怎么办 玩英雄联盟太卡怎么办 一方离婚证丢了怎么办 遭遇呼死你软件怎么办 开车遇见碰瓷的怎么办 遇到碰瓷老人的怎么办 睿强遥控锁坏了怎么办