- 전처리기 (preprocesser)
컴파일직전에 실행되는 프로그램
#으로 시작하여 줄바꿈으로 끝난다
- name space
식별자의 영역을 생성
같은 식별자를 구분할수있게 해줌 & 확실한 출처의 식별자를 사용할수있게 한다
근데 중복정의가 가능한가보다
[ 하지만 식별자까지 중복은 불가능 ]
#include <iostream>
namespace AA {
int a = 1;
}
namespace AA {
int b = 2;
}
int main() {
//실행가능
std::cout << AA::b;
return 0;
}
근데 내부에 중복으로 사용했을 경우 식별자까지 중복이 가능하다 ㅋㅋ [ 내부 중첩은 C++17부터 가능 ]
#include <iostream>
namespace AA {
int a = 1;
namespace AA {
int a = 3;
}
}
namespace AA {
int b = 2;
}
int main() {
std::cout << AA::a; // 1출력
std::cout << AA::AA::a; // 3출력
return 0;
}
namespace의 이름이 길다면 별명도 붙일수있다
using으로 간편하게 사용할수 있는데 using이 들어간 영역안에서만 유효하다
#include <iostream>
namespace AA {
int myInt = 1;
}
void test() {
//test()안에서만 AA를 사용시 정의를 하지 않아도 된다
using namespace AA;
//AA안에있는 myInt
std::cout<< myInt;
}
int main() {
//using namespace AA가 없으니 AA를 정의해줘야 한다
std::cout << myInt; // 오류
return 0;
}
using으로 간편하게 사용할수 있는데 using이 들어간 영역안에서만 유효하다
- 함수 선언
//테스트 함수 선언
void A(int n) {
std::cout << n;
}
int main() {
A(5);
return 0;
}
main에서 A가 호출되었을 때 일어난 일은
1. 함수 A시작
2. 지역변수 n 생성
3. 지역변수 n에 5가 대입
이다.
이걸 확실하게 알고있으면 나중 매개변수에 포인터 장난질 해놓은걸 덜 헤멜수있다
- 키워드
특별한 의미가있는 미리 정해놓은 예약된 식별자,
사용자가 다른 의미로 사용할수 없다.
(단 사용 할 수 있는 언어도 있음 / C++은 X )
int for = 0; // for도 키워드중 하나이기에 따로 사용 불가능
예약어라는 비슷한 개념도 있는데
키워드는 어떠한 사용의미를 지니고 있는 말이고
예약어는 사용하지 않지만 사용자에게 혼란을 막고
ex) java에서 const는 사용하지 않지만 예약어로 정해져있기에 사용 불가능하다 ( final사용 )
다음 버전이 업그레이드 될때의 사용하게 될지도 모르는 단어들을 미리 예약어로 정해놓아 사용못하게 해놓는다
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=youmasan&logNo=130025032660
'C++ > [책] C++ 기초 플러스' 카테고리의 다른 글
[ 203p ~ 209p ] 문자열 상수 (0) | 2021.06.30 |
---|---|
[ 179p ~ 203p ] 포인터, NULL&nullptr, New, Delete, 배열 포인터 (0) | 2021.06.28 |
[ 160p ~ 178p ] 구조체, 공용체, 열거체 (0) | 2021.06.03 |
[ 130p ~ 160p ] 배열, 문자열, string, raw문자열 (0) | 2021.06.01 |
[ 70p ~ 130p ] 식별자 규칙, 정수&실수, 멤버 연산자, const, static_cast, auto (0) | 2021.05.31 |