CH26
1.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MUL(A,B,C) ((A)*(B)*(C))
#define ADD(A,B,C) ((A)+(B)+(C))
int main() {
int a, b, c;
printf("숫자 3개 입력:");
scanf("%d %d %d", &a, &b, &c);
printf("세 정수의 합:%d\n", ADD(a, b, c));
printf("세 정수의 곱:%d\n", MUL(a, b, c));
return 0;
}
2.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14
#define AREA(R) ((R)*(R)*(PI))
int main() {
double rad;
printf("반지름의 길이 입력:");
scanf("%lf", &rad);
printf("반지름의 길이가 %lf인 원의 넓이: %g\n", rad, AREA(rad));
return 0;
}
%g는 실수형 자동출력
3.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX(X,Y) (X>Y)? X:Y
int main() {
int a, b;
printf("두개의 숫자 입력:\n");
scanf("%d %d", &a, &b);
printf("더 큰 숫자는 %d이다.", MAX(a, b));
return 0;
}
cf>const(값 변환 x)와 static(값 변환 o)의 차이점
1)const상수(심볼릭 상수)
:변수 선언시 const선언 추가하는 대신 선언 동시에 초기화 해야함
ex) const int MAX=100; (MAX는 상수, 따라서 값의 변경 불가!)
+)const int MAX;
MAX=100; 처럼 선언과 초기화 분리시킬 수 없음.
2)static 변수
: 지역변수에 static을 추가해 전역변수로 만드는 변수
이때, 지역변수란?
- 선언된 함수 내에서만 접근 가능
- 함수 내에 선언된 지역변수는 해당 함수가 반환하면 소멸
이때, 지역변수에 static이 붙게 된다면?
- 선언된 함수 내에서만 접근 가능(지역변수 특성)
- 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다(전역변수 특성)
- 접근할 수 있는 범위를 하나의 함수로 제한(전역변수보다 안정적)
2-1)static 전역변수 !
"이 변수는 외부 파일에서의 접근을 허용하지 않는다"
<=> " 이 변수의 접근범위는 파일 내부로 제한"
cf>이때 함수에 static 선언을 하면?
extern 선언을 하더라도 다른 파일에서는 접근 불가
ex)static void Add(void){
...}
CH27
1.매크로의 정의는 파일단위로 유효+선행처리기도 파일 단위로 선행처리
2.구조체의 정의도 파일 단위로만 그 선언이 유효
->이때 구조체는 여러 곳에서 쓰일 확률이 높기에 헤더파일에 삽입
->구조체를 포함한 헤더파일의 중복삽입일 경우 같은 구조체가 두 번 정의되기에 문제 생김
-> 헤더파일 중복 삽입은 문제가 되지 않으나 구조체 값의 변경시 생기는 오류가 문제
(ex.만약 main.c에서 구조체 값 변경했는데 intdiv3.c에 있는 구조체 변경 안하면 문제생김)
=> 조건부 컴파일을 활용하자!
1 #ifndef __STDIV2_H__
2 #define __STDIV2_H__
3 typedef struct div
4 {
5 int quotient;
6 int remainder;
7 }Div;
8
9 #endif
- first.c라는 실행파일에서 #include "__STDIV2_H__"
- 1행에서 아직 __STDIV2_H__는 정의 안되어있기에 2행부터 9행까지 포함하여 실행
- first.c에선 __STDIV2_H__정의하게됨
- 다음 second.c에서 #include "__STDIV2_H__"하고자 함
- 하지만 1행에서 이젠 __STDIV2_H__정의 되어있기에 2행에서 9행 실행되지 않고 정의할 수 없음
'C' 카테고리의 다른 글
220809(CH25) (0) | 2022.08.09 |
---|---|
220802(CH23) (0) | 2022.08.02 |
220728(CH21) (0) | 2022.07.28 |
220726(CH13,18) (0) | 2022.07.26 |
220721(CH16) (0) | 2022.07.26 |