728x90
728x90
SMALL
네임스페이스
- 함수와 변수들에 이름을 붙여줄 수 있다.
- 네임 스페이스를 사용하는 이유
ο 같은 이름의 함수나 변수더라도 구별할 수 있게 된다.
ex)
ο Myspqce 네임스페이스 공간 안에 있는 doSomething 함수
■ 호출시 Myspace::doSomething((3, 4));
ο 네임스페이스 안붙은 공간 안에 있는 doSomething 함수
■ 호출시 doSomething((3, 4));
ο 두 함수는 이름과 매개변수 타입, 리턴 타입까지 같지만 별개의 다른 함수다.
■ 네임스페이스가 다르기 때문 !
namespace Myspace
{
int doSomething((int a, int b))
{
return a + b;
}
}
int doSomething(int a, int b)
{
return a * b;
}
using namespace std;
int main()
{
cout << doSomething(3, 4) << endl;
}
- using namespace 뫄뫄
ο 하면 해당 namespace를 생략할 수 있다.
ο using namespace std
■ 하면 std::cout 이라고 안해도 되고 그냥 cout이라고만 해도 std의 cout이 호출 됨
ο 함수 안에도 쓸 수 있다. 함수 내부 안에서만 네임스페이스 생략 가능하도록 - 네임스페이스 안에 네임스페이스 또 쓸 수 있다.
ex)
Myspace::InnerSpace::func$()$
using namespace Myspace::InnerSpace
namespace Myspace
{
namespace InnerSpace
{
int func ( )
{
return 0;
}
}
}
전처리기
#define
- 매크로.
- 해당 파일 안에서만 정의 가 적용된다.
ο #define NUMBER 9
■ NUMBER들은 다 9로 정의된다.
ο #define NUMBER “Hello”
■ NUMBER들은 다 “Hello”로 정의된다.
ο #define Max$($a, b$)$ $($a > b$)$ ? a : b
■ Max$($1, 2$)$ → $($1 > 2$)$ ? 1 : 2
■ 즉 2로 정의된다.
■ Max$($1 + 3, 2$)$ → $($1 + 3 > 2$)$ ? 1 + 3 : 2
■ 즉 1+3=4, 4로 정의된다. - ifndef , ifdef 와 endif 와의 응용
ο ifdef + 매크로 ~ endif : 해당 매크로로 정의가 됐을 때 이 구간 복사 허용
ο ifndef + 매크로 ~ endif : 해당 매크로로 정의가 되지 않았을 때 이 구간 복사 허용
ο ex)
#include <iostream>
#define APPLE
int main()
{
#ifdef APPLE
std::cout << "APPLE" << std::endl;
#endif
#ifndef APPLE
std::cout << "APPLE" << std::endl;
#endif
}
■ “APPLE”이 출력 될 것 !
■ “APPLE”이 정의되어 있기 때문에
■ ifdef APPLE 정의 되어 있기 때문에 이부분이 실행된다
#ifdef APPLE
std::cout << "APPLE" << std::endl;
#endif
■ ifndef APPLE → APPLE이 정의 되어 있기 떄문에 이부분은 실행되지 않는다.
■ 만약 #define APPLE이 없거나
■ #define이 다른 코드 파일에 있다면 $($ #define은 파일 안에서만 효력 $)$
■ 아래 부분이 실행되겠지.
#ifndef APPLE
std::cout << "APPLE" << std::endl;
#endif
728x90
300x250
LIST
'C │ C++ │ C# > C++' 카테고리의 다른 글
C++ Chapter 2.2 : 정수형((Integer)), 고정 너비 정수 (0) | 2023.08.13 |
---|---|
C++ Chapter 2.1 : 기본 자료형 소개 (0) | 2023.08.13 |
C++ Chapter 1.4 : 컴파일, 헤더 파일 만들기, 헤더 가드가 필요한 이유 (0) | 2023.08.12 |
C++ Chapter 1.3 : 연산자, 기본적인 서식 맞추기, 선언과 정의의 분리 (0) | 2023.08.11 |
C++ Chapter 1.2 : 키워드 식별자 이름 짓기, 지역 범위 (0) | 2023.08.11 |