๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“– C๋ž‘ C++

C++ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๋ฅผ ์•Œ์•„๋ณด์ž

์ „์—ญ๋ณ€์ˆ˜์™€ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ๋งŽ์ด ๋“ค์–ด๋ณผ ์šฉ์–ด์ด๋‹ค.

์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜์ด๊ณ ,

์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋ฐ›์•„๋“ค์ธ ๋‹ค๋ฉด, ๊ฐ„๋‹จํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

 

์‹ค์ œ ์ฝ”๋“œ์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณธ๋‹ค๋ฉด

 

string globalVar;

void test()
{
	string localVar;
}

 

์œ„์น˜๋งŒ ๋ฐ”๋€๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋„ ๊ดœ์ฐฎ์„ ์ •๋„์ด๋‹ค. (๋ฌผ๋ก  ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋  ์ˆ˜๋Š” ์žˆ๋‹ค.)

๊ทธ๋Ÿฌ๋ฉด ์ •์ (Static) ๋ณ€์ˆ˜๋Š” ๋ฌด์—‡์ธ์ง€, ์ „์—ญ๋ณ€์ˆ˜๋ž‘ ์ฐจ์ด๊ฐ€ ๋ญ”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

(์ง€์—ญ๋ณ€์ˆ˜๋Š” ๋”ฐ๋กœ ์ •๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํŒจ์“ฐ ๐Ÿ˜€)

 

๊ฐœ๋…์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์•„๋ž˜์— ์ž์„ธํžˆ ์ ์„๊ฑฐ๊ณ ,

๊ธ‰ํ•œ ๋ถ„๋“ค์„ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€๋งŒ ๋จผ์ € ์ •๋ฆฌํ•˜์ž๋ฉด

 

1. ์ „์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉ
extern string globalVar;

2. ์ •์  ๋ณ€์ˆ˜ ์‚ฌ์šฉ
static int globalVar;

 

์ด๋ ‡๋‹ค.

 

- ์ „์—ญ๋ณ€์ˆ˜๋ž€?

- ์ •์ ๋ณ€์ˆ˜๋ž€?

 


1. ์ „์—ญ๋ณ€์ˆ˜ (Global Variable)๋ž€?

์œ„ํ‚ค๋ฐฑ๊ณผ: ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์–ด๋–ค ๋ณ€์ˆ˜ ์˜์—ญ ๋‚ด์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ „์‚ฐํ•™ ์šฉ์–ด์ด๋‹ค. ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋Œ€๋น„๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.

์ „์—ญ๋ณ€์ˆ˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ „์—ญ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค

๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ๊ฐœ๋…์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ์— ํฌํ•จ๋˜๋Š” ์นœ๊ตฌ์ด๋‹ค

ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น์ด ๋˜๋ฉด, ์ฃฝ์„ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋Š” ์นœ๊ตฌ์ด๊ธฐ๋„ ํ•˜๋‹ค

 

์‚ฌ์‹ค, ์ „์—ญ๋ณ€์ˆ˜๋Š” ์›ฌ๋งŒํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒŒ ์‚ฌ์‹ค ์ œ์ผ ์ข‹๋‹ค (์ด์œ ๋Š” ๊ธ€ ํ•˜๋‹จ์— ์ฝ”๋ฉ˜ํŠธ๋กœ ์–˜๊ธฐํ•˜๊ฒ ๋‹ค)

์ „์—ญ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ์˜ˆ์‹œ๋ฅผ ๊ฐ„๋‹จํžˆ ๋“ค๊ฒ ๋‹ค

 

/* main.cpp */
#include <iostream>
using namespace std;

string globalVar;

void func1()
{
    globalVar = "Hi";
}
void func2()
{
    globalVar = "Bye";
}

int main(void)
{
    func1();
    func2();

    cout << globalVar << "\n";
    return 0;
}

 

๋ˆ„๊ฐ€๋ด๋„ globalVar๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๋ณด์ธ๋‹ค

์ด์•ผ~ ์ •๋ง ๊ฐ„๋‹จํ•˜๋„ค์š”~

 

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์œ„์— ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋„ฃ์–ด๋‘์ง€ ์•Š๋Š”๋‹ค

๋˜๋Š” ํ—ค๋”ํŒŒ์ผ๊ณผ ์†Œ์Šค ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค (์ „์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ธฐ๋„ ํ•˜๋‹ค)

 

์˜ˆ๋ฅผ๋“ค์–ด, 

main.cpp, variable1.cpp, main.h ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

 

main.h

#include <iostream>
using namespace std;

string globalVar;

void func1();
void func2();
void func3();

main.cpp

#include "main.h"
using namespace std;

int main(void)
{
    func1();
    func2();
    func3();

    cout << globalVar << "\n";
    return 0;
}

variable1.cpp

#include "main.h"

void func1()
{
	globalVar = "My name is func1";
}

void func2()
{
	globalVar = "My name is func2";
}

void func3()
{
	globalVar = "My name is func3";
}

 

main.cpp ํŒŒ์ผ์—์„œ ์ •์˜ํ–ˆ๋˜ globalVar์„ ํ—ค๋” ํŒŒ์ผ์— ์˜ฎ๊ฒจ์„œ ํ•ด๋ณด์•˜๋‹ค

์˜ฎ๊ธฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š”๊ฑด๊ฐ€~ ๋†‰

์ธ์ƒ์€ ํ•ญ์ƒ ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š๋‹ค

 

release/variable1.o:(.bss+0x0): multiple definition of `globalVar'
release/main.o:(.bss+0x0): first defined here

 

์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋‹ค

์™œ๋ƒ๋ฉด, ๋ณ€์ˆ˜๋ฅผ ๊ตฌํ˜„ ํŒŒ์ผ์—์„œ ์ •์˜ํ•  ๋•Œ ํŒŒ์ผ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

๊ทธ๋ž˜์„œ main.cpp์™€ variable1.cpp์—์„œ ์ค‘๋ณต๋˜์–ด globalVar๋ผ๋Š” ๋ณ€์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์—๋Ÿฌ๊ฐ€ ๋‚œ๊ฑฐ๋‹ค

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค

๋ณ€์ˆ˜ ์•ž์— " extern "์ด๋ผ๋Š” ๊ฒƒ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค

 

extern string globalVal;

 

์š”๋ ‡๊ฒŒ ์จ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด~ 

 

release/variable2.o: In function `func1()':
CPP_PRAC/variable/variable2.cpp:5: undefined reference to `globalVar'

 

? ๋‹ค๋ฅธ ์—๋Ÿฌ๊ฐ€ ๋– ์„œ ์ž ์‹œ ๋‹นํ™ฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

์™œ undefined reference (์ •์˜๋˜์ง€ ์•Š์€ ์ฐธ์กฐ) ๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋œจ๋ƒ๋ฉด

extern์€ ๋‹จ์–ด ๋œป๋Œ€๋กœ ์™ธ๋ถ€์—์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋ผ๊ณ  ์•Œ๋ ค์ฃผ๊ธฐ๋งŒ ํ•œ๊ฑฐ๋ผ์„œ

extern ๋ณ€์ˆ˜๋ฅผ ์ •์˜๊ฐ€ ์•„๋‹ˆ๋ผ ์„ ์–ธ๋งŒ ํ•ด์ค€๊ฑฐ๋ผ์„œ ๊ทธ๋ ‡๋‹ค

 

๊ทธ๋ƒฅ globalVal๋ผ๋Š” ์ด๋ฆ„์ด ์žˆ์–ด~~ ์‚ฌ์šฉํ• ๋ ค๋ฉด ์‚ฌ์šฉํ•ด~~ ์ด๊ฑฐ๋ผ์„œ, 

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—๋Š” ํ• ๋‹น์ด ๋˜์ง€ ์•Š์€๊ฑฐ๋‹ค (→ ์„ ์–ธ๋งŒ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ”ํžˆ ์–˜๊ธฐํ•œ๋‹ค)

๊ทธ๋ž˜์„œ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’์ด๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฑ‰์€ ๊ฒƒ์ด๋‹ค

 

๊ทธ๋Ÿฌ๋ฉด ๋ง ๊ทธ๋ž˜๋„ ์ •์˜๊ฐ€ ์•ˆ๋˜์–ด์žˆ์–ด์„œ ๋ฌธ์ œ๋ผ๊ณ  ํ•˜๋‹ˆ, ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ

ํŒŒ์ผ์— ์ •์˜ํ•ด์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ๋‹ค

 

variable1.cpp

#include "main.h"

/* ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ */
string globalVar;

void func1()
{
    globalVar = "My name is func1";
}

void func2()
{
    globalVar = "My name is func2";
}

void func3()
{
    globalVar = "My name is func3";
}

 

์ด๋ ‡๊ฒŒ! ํ•ด์ฃผ๋ฉด ์ปดํŒŒ์ผ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 


2. ์ •์ ๋ณ€์ˆ˜ (Static Variable)๋ž€?

์ •์ ๋ณ€์ˆ˜๋Š” ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์‹œ ํ• ๋‹น๋˜์–ด ์ฃฝ์„ ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค

๋˜ํ•œ ์ผ๋ฐ˜ ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ (extern ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”) ํ•œ๋ฒˆ ์„ ์–ธํ•ด์ฃผ๋ฉด ํŽธํ•œ ์นœ๊ตฌ์ด๋‹ค

๋ณดํ†ต ํด๋ž˜์Šค์—์„œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ๋†“๊ณ  ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ทธ๊ฑด ๋‹ค์Œ์— ๋‹ค์‹œ ๋‹ค๋ฃจ๋ ค๊ณ  ํ•œ๋‹ค

 

์ •์ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ž‘ ๋น„๊ตํ•˜๋Š”๊ฒŒ ๋” ์•Œ๊ธฐ ์‰ฝ๋‹ค

 

์ง€์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ

#include "main.h"
using namespace std;

int func1()
{
    int globalVar = 1;

    return globalVar++;
}

int main(void)
{
    cout << func1() << endl;
    cout << func1() << endl;

    return 0;
}

 

์ง€์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ฒฐ๊ณผ

1
1

 

์ •์ ๋ณ€์ˆ˜ ์‚ฌ์šฉ

#include "main.h"
using namespace std;

int func1()
{
    static int globalVar = 1;

    return globalVar++;
}

int main(void)
{
    cout << func1() << endl;
    cout << func1() << endl;

    return 0;
}

 

์ •์ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ฒฐ๊ณผ

1
2

 

์ฐจ์ด๊ฐ€ ๋ณด์ด๋Š”๊ฐ€,,,,, 

๋ฉ”๋ชจ๋ฆฌ์— ๊ณ„์† ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜ ๋ฒ”์œ„์•ˆ์—์„œ ์‚ฌ์šฉํ•˜์˜€์–ด๋„

์ •์ ๋ณ€์ˆ˜ ํ‚ค์›Œ๋“œ์ธ " static "์œผ๋กœ ์ธํ•ด, ๋ฉ”๋ชจ๋ฆฌ์— globalVar๋ผ๋Š” ๊ฐ’์ด ๊ณ„์† ๋‚จ์•„์žˆ์–ด์„œ

๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๊ณ  ์ฆ๊ฐ€ ํ•˜์˜€๋‹ค

(extern ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š”๊ฑฐ๋Š” ์•„๋‹˜)

 

์—‘ static int globalVar =1; ์ด๊ฑฐ๋กœ ๋งค๋ฒˆ ์ดˆ๊ธฐํ™” ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€์šค? 

ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ฒ˜์Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ž๋ฆฌ ์žก์„ ๋•Œ๋งŒ ์‚ฌ์šฉ๋œ ์ดˆ๊ธฐํ™” ๊ฐ’์ด๋ผ์„œ

๋งค๋ฒˆ ์ดˆ๊ธฐํ™” ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค

 

์‚ฌ์‹ค ์ •์  ํด๋ž˜์Šค ๋ฉค๋ฒ„๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ทธ๋ƒฅ ์ •์ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฃฐ ๋‚ด์šฉ์ด ๋งŽ์ง€ ์•Š๋‹ค

๊ทธ๋ž˜์„œ ๋

 

 

 


 

์ „์—ญ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ์‹œ์—

์–ธ์ œ ๋‚ด๊ฐ€ ์ €์žฅํ•œ ๊ฐ’(globalVar)์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€, ์–ด๋–ค ๊ฐ’์„ ์จ์•ผํ•˜๋Š”์ง€๋„ ๋ชจ๋ฅด๊ธฐ์—..

์ž˜ ์•ˆ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค..

 

ํ•˜์ง€๋งŒ ์ž˜ ์“ด๋‹ค๋ฉด, ์‚ฌ์šฉํ•˜๊ธฐ์— ๋„ˆ๋ฌด ํŽธํ•˜๊ณ , ๊ผญ ์‚ฌ์šฉํ•ด์•ผํ•  ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค

๋ชจ๋“  ์Šค๋ ˆ๋“œ์™€ ํ•จ์ˆ˜์—์„œ ๊ณต์œ ํ•ด์•ผํ•  ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ 

์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ , ๋ฐ”๋€Œ์ง€ ์•Š์„ ๊ฐ’์„ ์„ค์ •ํ•ด ๋†“์„ ์ˆ˜๋„ ์žˆ๋‹ค

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํ™˜๊ฒฝํŒŒ์ผ์„ ๊ฐ™์ด ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋กœ๋“œํ•  ๋•Œ? ์ •๋„.

๋˜๋Š” ๊ฐ’ ๋ณ€๊ฒฝ์ด ๋  ๊ฒƒ์ด๋ž€ ๊ฑธ ์•Œ๊ณ ์„œ, ๋ฎคํ…์Šค ๊ฐ™์€ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค

 

ํ•˜์ง€๋งŒ ์ฒ˜์Œ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์ข‹์ง€ ์•Š์€ ์Šต๊ด€์ด๋ผ์„œ, ์—ผ๋‘๋งŒ ํ•ด๋‘๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค ใ…Žใ…Ž

 


์œ„ํ‚ค๋ฐฑ๊ณผ

ko.wikipedia.org/wiki/%EC%A0%84%EC%97%AD_%EB%B3%80%EC%88%98

 

์ „์—ญ ๋ณ€์ˆ˜ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „.

ko.wikipedia.org

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/

 

[์ปดํ“จํ„ฐ ๊ธฐ์ดˆ] ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ(Memory Structure) - jinShine

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ˆœ์„œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๊ด€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์ „์— ์–ด๋–ค์‹์œผ๋กœ ํ”„๋Ÿฌ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š”์ง€ ๊ณผ์ •์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜๋Š” ๊ณผ์ •์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์œผ์‹คํ…๋ฐ,

jinshine.github.io

multiple definition ์—๋Ÿฌ ์ฐธ๊ณ 

stackoverflow.com/questions/14526153/multiple-definition-of-a-global-variable

 

Multiple definition of a global variable

Possible Duplicate: constant variables not working in header In my header file which I use to create a shared object, I have the following: #ifndef LIB_HECA_DEF_H_ #define LIB_HECA_DEF_H_ st...

stackoverflow.com

undefined reference ์—๋Ÿฌ ์ฐธ๊ณ 

sunder4.tistory.com/390

 

extern ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ž.

unix๋‚˜ linux์—์„œ extern์„์จ์„œ ํ”„๋กœ๊ทธ๋žจ์„์งฏ๋Š”๋ฐ undefined์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋”๋ผ๊ตฌ์š” ์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ์Šค๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. head.h ๋‚ด์šฉ ----------------------- #include extern int a; temp.c๋‚ด์šฉ --------------..

sunder4.tistory.com