그래서 manifes constants란?
안녕하세요, 4.6강 명백한 상수들(manifest constants) 강의를 듣고 의문이 들어 질문 남깁니다. 교수님께서 보여주신 것들은 어찌보면 manifest constants, 명백한 상수들의 몇몇 예시처럼 느껴지는데 이를 정의한다면 어떻게 말을 할 수 있을까요? #define을 통해 프로그래머들이 합의한/혹은 이미 정해져 있는(약속되어 있는)상수들 같은 거라고 이해하면 될까요?
한편으로, 말 그래도 상수는 변하지 않고 정해져 있는 값이기에 앞에 '명백한'이 붙는 게 조금 사족처럼 느껴지는데 vague constant처럼 서로 대치되는 개념이 있는 건가요?
궁금합니다!
답변 2
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
코드에서 상수 값을 명확하고 의미 있는 이름으로 정의하여 가독성을 높이는 것을 의미합니다.
강의에서의 예시처럼 #define PI 3.141592 과 같이 정의하여,int area = PI * rad * rad; 와 같이 사용하는 경우처럼 상수 값에 의미 있는 이름을 부여하여 목적을 명확히 강조하는 것입니다.
int area = 3.141592 * rad * rad; 와 같이 상수를 바로 사용할 수도 있지만,2147483647 대신 INT_MAX 라고 이름을 붙여서 사용하는 것이 의미를 더 명확히 하고 유지보수를 쉽게 할 수 있도록 해줍니다.
참고로, 상수를 이름 없이 사용하는 경우에 대해서 매직 넘버 라고 표현하기도 하며, 매직 넘버를 많이 사용하는 것은 코드의 가독성을 떨어뜨리는 측면에서 지양해야 하는 코드 스타일 중 하나입니다.
1
안녕하세요, 인프런 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





