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¾³£×öһЩΥ±³±ê×¼µÄÊ¡£
ÄǾÍÊDZàÒëÆ÷µÄÎÊÌâÁË£¡ ÔÔòÉϱ¾À´ÊDz»ÄÜ·ÃÎʵģ¡
¿ÉÄÜ»¹ÓÐÒ»¸öÈ«¾ÖµÄA
ÎļþÔ´Âë¾ÍÊÇÉÏÃæµÄÕâЩ£¡
Ó¦¸ÃÓÐÈ«¾ÖµÄA
extern int A;
ÓÐÁËÕâ¾äÓ¦¸Ã¾Í¿ÉÒÔ·ÃÎʰÉ
µ±È»ÊÇ¿ÉÒÔ·ÃÎʵġ£
ÒòΪfile.hÊDZ»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) ¶¨Òå±äÁ¿£¬×÷ΪÒѳõʼ»¯µÄÈ«¾Ö±äÁ¿£¬ ·ÅÔÚÊý¾Ý¶
Ïà¹ØÎÊ´ð£º
ÇëÎÊVFPÖÐÈçºÎµ÷ÓÃC/C++º¯Êý£¿
ÄãÒªµ÷ÓÃʲô¹¦Äܵĺ¯Êý£¿Òª¿´¿´VFPÖÐÓÐûÓжÔÓ¦µÄº¯Êý£¬Èç¹ûÓоÍÊ¡×ÅÔÙµ÷ÓÃÁË¡£Èç¹ûûÓУ¬¿ÉÒÔ½«C/C++º¯Êýд¸öDLL»òFLL£¬È»ºóÔÚVFPµ÷Óü´¿É¡£
Ê®¶¹Èý ÀÏʦ£¬Ôõô²ÅÄÜÐÞ¸Ä×Ô¼ºµÄ ......
ÓÐÒ»10*10¾ØÕ󣬳ýÈ¥µÚÒ»¸öµã£¨0£¬0£©ºÍ×îºóÒ»µã£¨9£¬9£©£¬»¹Óа˸öµãΪ1£¬ÆäËû¶¼Îª0£¬ÒªÇóÓöþάÊý×é±íʾ¡£°Ë¸öµãÊÇËæ»úÉú³ÉµÄ£¬±àдÏà¹Ø³ÌÐò±íʾ¾ØÕóËùÓпÉÄÜÇé¿ö¡£
ÕæÐÄÇó½Ì¸÷λ¸ßÊÖ£¬°¥£¡±¾ÈËÌ«²ËÁË£¡ºÇºÇ£¡
......
ÔÚ¸ùĿ¼/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Öж¨ÒåµÄ·½·¨ ......