inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

4.6 명백한 상수들

그래서 manifes constants란?

해결된 질문

129

새싹비빔밥

작성한 질문수 15

1

안녕하세요, 4.6강 명백한 상수들(manifest constants) 강의를 듣고 의문이 들어 질문 남깁니다. 교수님께서 보여주신 것들은 어찌보면 manifest constants, 명백한 상수들의 몇몇 예시처럼 느껴지는데 이를 정의한다면 어떻게 말을 할 수 있을까요? #define을 통해 프로그래머들이 합의한/혹은 이미 정해져 있는(약속되어 있는)상수들 같은 거라고 이해하면 될까요?

한편으로, 말 그래도 상수는 변하지 않고 정해져 있는 값이기에 앞에 '명백한'이 붙는 게 조금 사족처럼 느껴지는데 vague constant처럼 서로 대치되는 개념이 있는 건가요?

궁금합니다!

c 따배씨 4.6

답변 2

1

Soobak

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

코드에서 상수 값을 명확하고 의미 있는 이름으로 정의하여 가독성을 높이는 것을 의미합니다.

강의에서의 예시처럼 #define PI 3.141592 과 같이 정의하여,
int area = PI * rad * rad; 와 같이 사용하는 경우처럼 상수 값에 의미 있는 이름을 부여하여 목적을 명확히 강조하는 것입니다.

int area = 3.141592 * rad * rad; 와 같이 상수를 바로 사용할 수도 있지만,
2147483647 대신 INT_MAX 라고 이름을 붙여서 사용하는 것이 의미를 더 명확히 하고 유지보수를 쉽게 할 수 있도록 해줍니다.

참고로, 상수를 이름 없이 사용하는 경우에 대해서 매직 넘버 라고 표현하기도 하며, 매직 넘버를 많이 사용하는 것은 코드의 가독성을 떨어뜨리는 측면에서 지양해야 하는 코드 스타일 중 하나입니다.

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 새싹비빔밥님.

‘Manifest Constants’는 프로그래밍에서 자주 사용되는 개념으로, 일종의 “명시적인 상수”를 의미합니다. 일반적으로 #define 지시어를 사용하여 코드 내에서 고정된 값을 명백히 설정하는 데 사용됩니다. 이를 통해 코드의 가독성을 향상시키고, 특정 값이 왜 사용되고 있는지 명확하게 이해할 수 있게 해 줍니다.

말 그대로 상수는 변하지 않는 값을 의미하지만, ‘명백한’이라는 표현은 그런 상수의 사용 의도를 명확하고 명시적으로 표현했다는 점을 강조하는 것입니다. 즉, 변수나 복잡한 식 대신 #define을 사용해 상수의 이름을 부여하고 그 값을 설정함으로써 코드의 가독성과 유지보수성을 높이는 데 목적이 있습니다.

특히 이런 상수가 ‘약속된 값’이라면, 예를 들어 프로그램 전역에서 동일한 의미로 쓰이는, 흔히 사용되는 상수를 정의해두는 데 유용합니다. 이는 기업이나 개발 팀 내에서 코드 스타일이나 규약에 따라 정의될 수 있습니다.

‘Vague Constants’와 같은 대치되는 개념은 없지만, 일반적으로 ‘매직 넘버’라 부르는 것이 있습니다. 매직 넘버는 코드 내에서 특별한 의미 없이 값 그대로를 사용하는 상수를 의미하며, 코드의 이해를 어렵게 만들어 피하는 것이 좋습니다.

이와 관련해 다음 글들을 참고해 보시면 좋습니다:
- 매직 넘버를 없애기 위한 노력 - 매직 넘버의 문제점과 제거 방법을 다룬 글입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Export template 안됨

1

19

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

54

3

main 함수에서 왜 int만 선언이 되는걸까요

1

56

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

54

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

61

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

80

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

113

2

소스파일안에 여러 파일

1

75

2

F5와 F7의 차이

1

76

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

69

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

65

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2