블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

C, C++ extern const variable 사용하기

2005. 6. 9. 17:00 | Posted by 속눈썹맨
. C언어 일 때 (gcc 2.9, 3.x 로 컴파일함)
[ilashman@ob test_extern]$ cat a.h
#ifndef A_H
#define A_H
int a;
#endif /* A_H */
[ilashman@ob test_extern]$ cat b.h
#ifndef B_H
#define B_H
#include <stdio.h>
void func();

void func2()
{
    printf("b.h a :  %d\n", a);
    printf("b.h &a :  %p\n", &a);
}
#endif /* A_H */
[ilashman@ob test_extern]$ cat a.c
#include "a.h"
#include "b.h"
#include <stdio.h>

extern int a;

int main()
{
    a = 3;
    printf("hi\n");
    printf("a.c a : %d\n", a);
    printf("a.c &a : %p\n", &a);

    func();
    func2();

    return 0;
}
[ilashman@ob test_extern]$ cat b.c
#include "a.h"
#include "stdio.h"

extern int a;

void func()
{
    printf("b.c a : %d\n", a);
    printf("b.c &a : %p\n", &a);
}
[ilashman@ob test_extern]$ cat Makefile
all:a

a:
        gcc a.c b.c -o a -g -Wall

clean:
        \rm a
[ilashman@ob test_extern]$ ./a
hi
a.c a : 3
a.c &a : 0x8049600
b.c a : 3
b.c &a : 0x8049600
b.h a :  3
b.h &a :  0x8049600

-------------------------------------------
C와 C++에서는 extern, extern const를 쓰는 용법이 각자 다르다.

. C++의 경우 Visual Studio .NET 2003에서 테스트 함.
. C++ extern variable
. header에는 아무 것도 적지 않는 다.
. 한 cpp 파일
const int x = 10;
. 다른 모든 cpp 파일
extern int x;

. C++ extern const variable (extern variable과는 다르다.)
. header에는 아무 것도 적지 않는 다.
. 한 cpp 파일
extern const int x = 10;
. 다른 모든 cpp 파일
extern int x;
-------------------------------------------
extern을 쓰지말고 namespace를 쓴다.
namespace는 파일에 관계 없이 같은 scope가 유지된다.

. 참고
google, MSDN -> extern const, constant values
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_constant_values.asp