inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

6.18 루프 안에서 함수의 반환값 사용하기

선언이 필요하다는 경고

11772

송재현

작성한 질문수 1

0

안녕하세요.
선생님이 코드를 써 내려가시기 전에 일시정지하고 제 나름대로 코드를 쓰다가 문제가 생겨서 질문을 남겼습니다.
 
int main() { int a, b, power, i; printf("a^b\n"); while (1) { printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); for (i = 0, power = 1; i < b; ++i) { power = power * a; } printf("%d\n", power); } return 0; }
 
질문: for문에 { }를 씌우면 return 0; 다음의 }에 빨간 밑줄이 그이면서 오류가 뜨고 선언이 필요하다고 합니다. { }를 벗겨 내면 오류가 없어지고요. 실행은 됩니다. 제 코드에 문제가 있나요?

c

답변 1

0

강민철

안녕하세요 :)

 

보내주신 코드가 문제가 있는 것이 맞나요?

질문자님의 코드에는 문제가 없고,

리팩토링한 뒤 실행해보았을 때에도 문제가 없었습니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() { 
	int a, b, power, i; 
	
	printf("a^b\n"); 
	
	while (1) { 
		printf("a = "); 
		scanf("%d", &a); 

		printf("b = "); 
		scanf("%d", &b); 
		
		for (i = 0, power = 1; i < b; ++i) {
			power = power * a;
		} 
		
		printf("%d\n", power); 
	} 

	return 0; 
}

이해를 돕기 위해 질문해주신 [선언이 필요합니다] 오류를 설명드리자면,

말 그대로 선언이 되지 않은 함수가 있는 경우 발생합니다.

 

이는 정말 많은 경우 중괄호 짝이 맞지 않거나, 실수로 ; 를 넣었을 때에 발생하지요.

아래처럼요.

 

따라서, 제가 첨부해주신 소스코드로 사용하시거나,

아니면 오타를 찾아보시는 것이 좋을 듯 합니다.

 

감사합니다.

 

0

송재현

감사합니다

0

송재현

사실 답변을 보고 재현을 하려 했는데 그때처럼 오류코드가 뜨지 않아 물음표를 남긴 채 그냥 넘어갔습니다.. 그러나 강의를 보던 중에 재현이 되어서 다시 댓글을 남겼습니다!

8.4(사용자 인터페이스는 친절하게) 강의에 나왔던 코드를 비슷하게 썼습니다.

---

아 해결되었습니다. 24줄 또는 27줄의 줄바꿈을 없애면 오류 코드가 사라집니다.. 왜 그런진 모르겠습니다ㅜㅜ

0

강민철

아아ㅎㅎ 우선 해결 되었다니 다행입니다 :)

음... 글쎄요.. 저 줄바꿈은 비문은 아닌데 컴파일러의 문제가 아닐까

조심스레 예측해봅니다..

저는 위와 똑같이 작성했는데 아무런 오류가 뜨질 않거든요 (visual studio 2017) 

 

Export template 안됨

1

63

2

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

1

88

3

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

1

78

2

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

1

75

2

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

1

78

1

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

1

87

2

12.12 헤더 관련 질문

1

74

2

Visual Studio Community 2026 사용 문의

1

169

2

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

1

72

2

getchar(), putchar()

1

111

3

강의자리ㅛ

1

93

2

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

1

127

2

소스파일안에 여러 파일

1

87

2

F5와 F7의 차이

1

90

2

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

1

67

2

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

1

78

1

Step over 기능 문의

1

64

2

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

1

87

2

int main 함수 관련 오류 문의

1

76

2

13.4 words[0]

0

73

2

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

1

67

2

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

1

71

2

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

1

60

2

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

1

59

2