반응형
1. namespace (명칭 공간)
namespace의 간단한 사용법.
#include <iostream>
using namespace std;
namespace space1
{
void printHello()
{
cout << "Hello" << endl;
}
}
void printHello()
{
cout << "Helloooo" << endl;
}
int main()
{
printHello();
return 0;
}
main함수에서 printHello 함수를 호출시켰다. 둘중 어떤 함수가 호출될까?
실행결과 Helloooo가 출력된다. space1이라는 namespace를 사용하지 않았기 때문이다.
space1::printHello(); 라고 하면 Hello가 호출된다.
다른 예시를 몇가지 보자.
#include <iostream>
using namespace std;
namespace space1
{
void printHello()
{
cout << "Hello" << endl;
}
}
namespace space2
{
void printHello()
{
cout << "Helloooo" << endl;
}
}
int main()
{
using namespace space1;
printHello();
return 0;
}
std를 사용할때와 마찬가지로 using namespace space1을 선언하여 사용할수도 있다. Hello가 출력된다.
namespace내부에 namespace를 또 만들수도 있다.
#include <iostream>
using namespace std;
namespace space1
{
namespace innerSpace
{
void printHello()
{
cout << "Hello" << endl;
}
}
}
int main()
{
space1::innerSpace::printHello();
return 0;
}
여기서 또 using namespace를 사용하고 싶다면
이런식으로 사용할수도 있다.
2. 전처리기
매크로의 사용법.
첫번째는 마치 어떤 오브젝트가 있는것처럼 매크로를 정의하는 방식이다.
#define MAX 100
매크로가 하는 일을 윗줄을 예로 들어 설명하면, 코드에서 MAX를 만나면 100으로 바꿔버리는 것이다.
#define Hello "Hello World!"
숫자 뿐만 아니라 이런식으로 문자열로 사용할 수도 있다. 쉽게말해서 매크로 define은 그냥 문서 편집기이다.
문서 편집 기능 중에 이걸 만나면 다음 걸로 교체만 해주는 것이다.
두번째로 컨디셔널 컴파일레이션 이라는 방식이다.
조건에 맞춰서 컴파일을 다른방식으로 하는 방법이다.
i_like_cpp이 define되어 있기때문에 study cpp이 출력된다. define을 지웠더니 study java가 출력되었다.
이 방법은 언제 많이 사용할까? 보통 프로그램을 빌드하기 전에 윈도우인지 리눅스인지 알고 시작하고 싶을때 많이 사용된다.
반응형
'C++' 카테고리의 다른 글
3-2. C++ 비트단위 연산자(shift,AND,OR,XOR) (1) | 2024.01.29 |
---|---|
3-1. C++ 연산자(콤마 연산자, 삼항 연산자), 이진법 (0) | 2024.01.29 |
2-2. 오버플로우, 부동소수점 (1) | 2024.01.26 |
2-1. C++ 변수와 기본 자료형 (1) | 2024.01.26 |
1-1. C++의 기초 (입출력 스트림, 헤더파일 만들기, 헤더 가드의 필요성) (13) | 2024.01.24 |