▶️ #pragma once
- 해당 헤더파일을 한번만 포함하게 해주는 전처리기 입니다.
- 해당 헤더파일에 선언되어 있다면, 해당 헤더 파일은 중복으로 선언되지 않습니다.
▶️ include
전처리지시자입니다.
외부의 파일을 불러와서 사용할 수 있게 해줍니다.
iostream처럼 c++ 표준 헤더파일들의 경로는
프로젝트 - 속성 - v/c++ 디렉터리 - 포함디렉터리 or 외부 include 디렉터리 에서 확인하실 수 있습니다.
컴파일 타임에 전처리에 구문이 해석됩니다.
▶️Define
- 전처리기 ( 컴파일 전 먼저 처리 )
- define은 이름 뒤에 있는 코드를 해당 이름을 사용한 곳에 컴파일 전 복사해두고, 복사한 코드를 컴파일하게 됩니다
- 뒤의 코드를 1줄로 작성해야 합니다
#define LEVEL_MAX 10
int main()
{
printf( LEVEL_MAX );
return;
}
▶️ define 여러줄 사용하기
- 여러줄을 사용하려면 \를 이용하여 붙여줘야 합니다
- 맨 마지막줄은 \를 작성하지 않아도 됩니다.
#define TEST1 std::cout << "Test" << std::endl;\
std::cout << "Test1" << std::endl;
- 함수처럼 사용이 가능 합니다.
#define TEST2(str) std::cout << str << std::endl;
int main()
{
TEST2("출력");
return 0;
}
#define TEST std::cout << "test" << std::endl;
int main()
{
TEST;
return 0;
}
- define은 상수가 아닙니다. 컴파일전 코드를 그대로 붙여넣습니다.
▶️ Define의 장단점
- define의 장점 : 간편합니다. 코드를 간결하게 정리할 수 있습니다.
- define의 단점 : 디버깅이 안됩니다. 가독성이 떨어집니다.
=> 개발 속도가 필요한 프로토 타입 등 필요한 곳,
자주 사용하는 기능(싱글톤, 객체 제거 매크로),
인증된 코드에 사용하고 왠만하면 사용 자제하길 권장드립니다.
▶️ extern
- 다른 cpp 파일에 선언한 전역 변수를 다른 파일에서 참조, 사용할 수 있게 해줍니다.
// Test.cpp
// Test.cpp의 전역변수 gInt
int gNum = 99
// main.cpp
exturn int gNum;
int main()
{
std::cout << gNum << std::endl; // 99 출력
return 0;
}
gNum변수는 exturn 키워드를 사용하여 다른 파일에서 선언시, Test.cpp가 아닌 파일에서도 사용 가능해집니다.
외부에 있는 함수도 exturn을 이용해 가져올 수 있습니다.
‼️주의사항 : exturn을 사용하는 변수는 한곳에서만 초기화해야합니다.
실제 메모리 공간은 선언된 파일에서 할당됩니다.
▶️ memcpy_s
메모리 복사 함수입니다.
1번 인자는 복사해서 새로 만들 포인터 변수
2번 인자는 복사해서 새로 만들 포인터 변수의 크기
3번 인자는 복사할 대상인 포인터 변수
4번 인자는 복사할 대상의 크기만큼을 메모리에 복사합니다.
FItem * StoreItem = GetItem();
FItem * BuyItem = new FItem;
memcpy_s( BuyItem, sizeof(FItem),
StoreItem, sizeof(FItem) );
'개발개발 > c++' 카테고리의 다른 글
c++의 클래스, 접근지정자, 생성자와 소멸자, 얕은복사(shallowCopy)와 깊은복사(DeepCopy), 메모리 단편화와 해결방안, 싱글턴패턴 (0) | 2024.12.11 |
---|---|
c++의 파일 입출력 (0) | 2024.12.10 |
c++의 지역변수, 전역변수, 메모리 영역, static 변수, 동적할당, 함수 오버로딩, 함수의 디폴트 인자 (0) | 2024.12.08 |
c++의 구조체, 구조체 크기와 구조체 멤버맞춤 (0) | 2024.12.07 |
c++의 함수 (0) | 2024.12.06 |
댓글