c中 extern 和 static 困惑! - C/C++ / C语言
在file1.c中声明A的时候加了static,为什么在file.h中的f()函数还能够访问A的值????
//file1.c
#include <stdio.h>
#include "file.h"
static int A = 3;
void main() {
f();
}
//file.h 头文件
#ifndef _FILE_H
#define _FILE_H
extern int A;
void f() {
printf("%d", A*3);
}
#endif
什么编译器?什么系统?
看看A的连接属性再说吧。(unix下可以用nm,windows下可以用dumpbin)
是windows下 vc6.0
那就dumpbin看看吧。vc经常做一些违背标准的事。
那就是编译器的问题了! 原则上本来是不能访问的!
可能还有一个全局的A
文件源码就是上面的这些!
应该有全局的A
extern int A;
有了这句应该就可以访问吧
当然是可以访问的。
因为file.h是被file1.c #include 的,在同一编译单元内,自然可以访问到file1.c里的
static int A = 3;
C/C++ code:
/* 用nm可以帮助理解三种不同的形式的变量说明:*/
int x; /* C (Common) 声明(可能同时也定义)变量, 到了链接阶段, */
/* 1. 如果没在其他模块发现同名(D)符号,作为未初始化的全局变量, 放在BSS */
/* 2. 如果有在其他模块发现同名(D)符号,作为已初始化的全局变量, 放在数据段 */
int y = 1; /* D (Data) 定义变量,作为已初始化的全局变量, 放在数据�
相关问答:
SHIFT加F10与那个键右ctrl边上的那个键功能一样,想屏这个
但不知要怎么写那个组合键!
有没哪个大侠放一段这个的代码或写一段
http://topic.csdn.net/u/20090609/15/7dc9fb70-243f-4070-9cfd-34e48b66e6c6.html
......
大家好:
我想实现检测到插入SD卡后自动将SD卡格式化的功能,不知C/C++中有没有格式化U盘的函数?
另外,我不想使用SHFormatDrive,因为这个函数会弹出是否要格式化的提示框,我需要的是系统自动格式化,而操作者� ......
在根目录/lib中存放一个log.c,log.h,并用下面的语句:
gcc -c log.c
ar crv liblog.a log.o
编译出一个liblog.a静态库,然后在文件夹:/testfile中创建一个test.c和testc.c,test.c中引用了testc.c中定义的方法 ......
visual c++2008速成版,不能编译C程序吗?如果能是怎么开始的啊?用它带的命令提示单元除外 。
新建工程(空工程或win32控制台)
绝对可以。建立win32控制台程序就可以
引用
新建工程(空工程或win32控制台� ......