나의 작은 valley
[C언어] 키워드&예약어, 함수, 디버거 사용법 본문
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
'Computer Science > [C언어] 문법 정리' 카테고리의 다른 글
[C언어] 정수형들, 오버플로우, 8진수와 16진수 (0) | 2022.09.06 |
---|---|
[C언어] 자료형, 변수와 상수, scanf() (0) | 2022.09.05 |
[C언어] 변수관련, printf() 사용법, 주석다는 법 (0) | 2022.09.05 |
[C언어] 비주얼 스튜디오, 명령프롬포트 단축키 및 팁들 (0) | 2022.09.05 |
INTRO (0) | 2022.08.03 |
Comments