본문 바로가기
Jaden's spectrum/📂 Programming Languages

[c++] 7. define & 하드코딩

by JadenWe 2025. 3. 17.
반응형

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!

위 코드에서 PIGREETING#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

 

 

 

반응형