나의 작은 valley

[C언어] 키워드&예약어, 함수, 디버거 사용법 본문

Computer Science/[C언어] 문법 정리

[C언어] 키워드&예약어, 함수, 디버거 사용법

붕옥 아이젠 2022. 9. 5. 11:31
728x90

//키워드(keywords)와 예약어(reserved identifiers)

 

키워드&예약어: 변수이름으로 사용할 수 없다.

 

 

 

//함수 만들기 

#include <stdio.h>		


void repeat_say_hello(void);	//프로토타입(prototype), function declaration


int main(void)		
{

	repeat_say_hello();	//repeat_say_hello는 (void)여서 ()안에 인수를 넣어줄 필요가 없다.
	                    //함수를 호출하기 전에 함수가 정의 되어있어야 한다. 
                        //함수가 정의된 부분이 호출 이후에 있더라도 함수의 이름만 정의된 부분 위에 있으면 아무런 문제가 없다.
	return 0; 

}


void repeat_say_hello(void)			//함수가 또 함수를 호출하는 구조, return type이 void인 경우 리턴을 생략할 수 있다. 
{
	printf("Hello, World!\n");

	return;
}

 

 

 

//디버거 사용법

코드 줄 인덱스보다 왼쪽을 클릭하면 시작점이 찍힌다. 그 상태로 비주얼 스튜디오 기준 f5를 누르면 그 시작점부터 디버깅이 시작된다.

 

좌측 하단에 선언한 변수이름과 값, 자료형이 나온다. 그런데 값이 이상한 것을 볼 수 있다. 나중에 배울 이야기이지만 그래서 변수 초기화를 선언과 동시에 해주어야 한다. 

 

debug => step into를 누르면 시작점에서 다음 줄 코드로 넘어가고 이에 따라 value가 원래의 의도되로 바뀌는 것을 볼 수 있다.

 

디버거를 실제로 찍어보면 16번쨰 줄에서 step into를 누르면 21번쨰 줄로 이동하는 것을 볼 수있다.

 

cf) 만약 repeat_say_hello함수 안에서 선언된 변수의 이름과 main함수 안에서 선언된 변수의 이름이 같더라도 이름만 같을 뿐 다른 변수이다.

 

cf) 16번쨰 줄에서 step over을 누르면 들어가진 않고 그냥 실행만 시켜보고 넘어간다.

 

 

 

//문법(syntax)오류와 문맥(semantic)오류

 

문법오류: 쉽게 찾을 수 있다.

 

문맥오류: 찾기 어렵다.

#include <stdio.h>		



int main(void)		
{
	int n1, n2, n3, n4;

	n5 = 3;	//문법오류
	
	n1 = 1;
	n2 = n1 * n1;
	n3 = n2 * n1;
	n4 = n2 * n1; //문맥오류, n4이 n1을 4제곱하기를 원함. 그런데 문법적으로 문제가 없기에 컴파일러가 잡아줄 수 없다.

	//문맥오류 해결법 1: 디버거 찍어보기
	//문맥오류 해결법 2: printf()로 출력해서 결과값보기


	return 0;
}

 

 

728x90
Comments