cpp_static_global - 8BitsCoding/RobotMentor GitHub Wiki
static / global / extern λΉκ΅
static: μ μλ³μ, ν΄λΉ μμ€νμΌλ΄μμλ§ μ ν¨νκ² μ°κ² λ€.
extern : μ μλ³μ, λ€λ₯Έ μμ€μμλ μΈμν μ μκ² μ°κ² λ€.
μμ μ static μ μλ³μλ‘ μ μΈνλ©΄, λ€λ₯Έ μμ€νμΌμμλ κ·Έ λ³μλ₯Ό μ§μ λ°κΏ μλ, μ μλ μλ€.
νμ§λ§ static μ μλ³μλ₯Ό μ μΈν μ€λΈμ νΈμμ μ΄ λ³μλ₯Ό λ°κΏ μ μλ ν¨μλ₯Ό μ 곡νλ€λ©΄, λ€λ₯Έ μ€λΈμ νΈμμ ν¨μλ₯Ό νΈμΆνλ λ°©μμΌλ‘ μ μλ³μμ κ°μ λ°κΏ μ μλ€.
// main.cpp
extern int global_var;
void main()
{
global_var = 99;
Sub s;
printf("%d\n", global_var);
// 100 μΆλ ₯
}
// sub.cpp
int global_var;
// μ¬μ©ν λλ extern μ¬μ©κΈμ§
class Sub{
public:
Sub() {
global_var = 100;
}
};
// main.cpp
static int global_var;
void main()
{
global_var = 99;
Sub s;
printf("%d\n", global_var);
// 99 μΆλ ₯
}
// sub.cpp
int global_var;
// μ¬μ©ν λλ extern μ¬μ©κΈμ§
class Sub{
public:
Sub() {
global_var = 100;
}
};