static은 link의 개념과 scope block의 개념으로 구분되는데
여기서는 link의 개념을 의미한다
extern은 external linkage이고
static은 internal linkage이다
extern은
다른 어딘가 정의돼있을 것이라고 알려주는 용도로 사용된다
이는 외부와 link해서 사용하도록 하는 것이다
// main.cpp
#include <iostream>
extern int a;
int main()
{
std::cout << a << std::endl;// 999 출력
}
// a.cpp
int a = 999;
static은
하나의 translation unit에서만 사용하도록 하기 위해 사용된다
이는 외부와 link가 되지 않도록 하는 것이다
// main.cpp
#include <iostream>
int a = 0;
int main()
{
std::cout << a << std::endl;// 0 출력
}
// a.cpp
static int a = 999;
'C++ > [노코프] Tips' 카테고리의 다른 글
[C++ Tips] 싱글톤 (0) | 2024.04.07 |
---|---|
[C++ Tips] static (0) | 2024.04.07 |
[C++ Tips] std::string (0) | 2024.04.06 |
[C++ Tips] 상속의 문제점 (0) | 2024.04.06 |
[C++ Tips] Virtual Function (0) | 2024.04.06 |