C++을 포함한 프로그래밍에서는 유지보수성과 가독성을 높이기 위해 코드의 가변적인 값을 효율적으로 관리하는 것이 중요합니다. 이 과정에서 #define과 같은 매크로를 활용할 수 있으며, 반대로 하드코딩(Hard Coding)을 피하는 것이 좋은 습관입니다.
#define (매크로 상수)
#define은 전처리기 지시문(preprocessor directive) 중 하나로, 특정 값을 이름으로 정의하는 기능을 제공합니다. 컴파일 과정에서 #define으로 정의된 이름이 실제 값으로 치환됩니다.
#define 기본 사용법
#include <iostream>
#define PI 3.14159
#define GREETING "Hello, World!"
using namespace std;
int main() {
cout << "원주율: " << PI << endl;
cout << GREETING << endl;
return 0;
}
원주율: 3.14159
Hello, World!
위 코드에서 PI와 GREETING은 #define을 통해 상수처럼 사용되며, 컴파일 과정에서 실제 값으로 대체됩니다.
매크로 함수 정의
매크로는 단순한 값뿐만 아니라 함수처럼 사용할 수도 있습니다.
#include <iostream>
#define SQUARE(x) ((x) * (x))
using namespace std;
int main() {
int num = 5;
cout << "5의 제곱: " << SQUARE(num) << endl;
return 0;
}
5의 제곱: 25
하지만 매크로 함수는 디버깅이 어렵고 예기치 않은 결과를 초래할 수 있으므로, 가능하면 inline 함수나 constexpr을 사용하는 것이 좋습니다.
하드코딩(Hard Coding)
하드코딩(Hard Coding)은 코드 내에 특정 값을 직접 입력하는 방식입니다. 하드코딩을 하면 유지보수가 어렵고, 코드의 재사용성이 떨어질 수 있습니다.
하드코딩의 문제점
다음 예제를 살펴보겠습니다.
#include <iostream>
using namespace std;
int main() {
cout << "원의 반지름을 입력하세요: ";
double radius;
cin >> radius;
double circumference = 2 * 3.14159 * radius; // 하드코딩된 원주율
cout << "원의 둘레: " << circumference << endl;
return 0;
}
위 코드에서 3.14159 값이 직접 사용되었습니다. 만약 여러 곳에서 이 값을 사용해야 한다면, 변경할 때마다 모든 코드를 수정해야 합니다.
하드코딩을 피하는 방법
1. #define 사용하기
#define PI 3.14159
2. const 사용하기
const double PI = 3.14159;
3. constexpr 사용하기 (C++11 이상)
constexpr double PI = 3.14159;
#include <iostream>
using namespace std;
constexpr double PI = 3.14159;
int main() {
double radius;
cout << "원의 반지름을 입력하세요: ";
cin >> radius;
double circumference = 2 * PI * radius;
cout << "원의 둘레: " << circumference << endl;
return 0;
}
이제 PI 값을 변경해야 할 경우, 한 곳만 수정하면 되므로 유지보수가 훨씬 편리해집니다.
define은 전처리기 매크로로, 상수나 간단한 함수를 정의할 때 사용됩니다.
하드코딩은 유지보수가 어렵고 확장성이 떨어지기 때문에 가능한 피하는 것이 좋습니다.
const or constexpr을 사용하면 가독성과 유지보수성이 높은 코드를 작성할 수 있습니다.
[C++] 6. 배열 (+다중 배열)
배열 (1차원 배열) 배열은 다음과 같이 선언할 수 있습니다.데이터타입 배열이름[크기];int numbers[5]; // 크기가 5인 정수형 배열 선언배열을 선언할 때 크기를 명시하며, 선언과 동시에 초기화할
clarelee.tistory.com
'Jaden's spectrum > 📂 Programming Languages' 카테고리의 다른 글
[c++] 9. 포인터 & 어드레스 연산자 (0) | 2025.03.18 |
---|---|
[c++] 8. 함수 (0) | 2025.03.17 |
[C++] 6. 배열 (+다중 배열) (0) | 2025.03.17 |
[C++] 5. 반복문 (for & while) (0) | 2025.03.16 |
[C++] 4. 조건문 (if & switch) (0) | 2025.03.16 |