인프런 커뮤니티 질문&답변

송재현님의 프로필 이미지
송재현

작성한 질문수

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

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

선언이 필요하다는 경고

작성

·

10K

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; 다음의 }에 빨간 밑줄이 그이면서 오류가 뜨고 선언이 필요하다고 합니다. { }를 벗겨 내면 오류가 없어지고요. 실행은 됩니다. 제 코드에 문제가 있나요?

답변 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; 
}

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

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

 

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

아래처럼요.

 

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

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

 

감사합니다.

 

송재현님의 프로필 이미지
송재현
질문자

감사합니다

송재현님의 프로필 이미지
송재현
질문자

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

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

---

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

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

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

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

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

 

송재현님의 프로필 이미지
송재현

작성한 질문수

질문하기