본문 바로가기

C언어/시큐어코딩

시큐어코딩을 위한 C언어 기본 용어

C언어의 구조

1. 함수 기반 언어: 모든 C 프로그램은 main함수에매크서 프로그램이 실행됩니다.

#include <stdio.h>
int main(void){
	int a = 10;
    int b = 20;
    printf("%d", a+b);
    
    return 0;
    }

main함수는 프로그램의 진입점으로 여기서 실행이 됩니다.


2. 매크로

매크로 함수: 매크로는 코드의 반복을 줄이고, 함수처럼 사용할 수 있다.

#define SQUARE(x) ((x) * (x))  //매크로 함수 정의

int main() {
    int a = 5;
    int result = SQUARE(a); 
    printf("Square of %d is %d\n", a, result);
    return 0;
}

여기서 SQUARE(X)는 매크로 함수이고 x값을 받아 (x)*(x)를 계산합니다


매크로 상수: 상수 값을 매크로로 지정합니다

#define PI 3.14  //매크로 상수 정의

int main() {
    float radius = 5.0;
    float area = PI * radius * radius;  
    printf("Area of circle: %.2f\n", area); 
    return 0;
}

PI는 매크로 상수로 어디서나 사용할 수 있는 값을 제공합니다


3. 인라인 함수

인라인 함수 : 함수 호출시 오버헤드를 줄이기 위해 함수 본문을 호출 위치에 삽입하는 방식

inline int add(int a, int b) {  //인라인 함수 정의
    return a + b;
}

int main() {
    int result = add(3, 4);  //인라인 함수 호출
    printf("Sum: %d\n", result); 
    return 0;
}

inline 키워드를 사용하면 함수 호출 시 해당 함수의 코드가 호출 위치에 직접 삽입되어 실행됩니다


4. 정적 함수

정적함수 : 함수가 선언된 파일 내에서만 사용 가능

static void printMessage() {  //정적 함수 정의
    printf("This is a static function.\n");
}

int main() {
    printMessage();  //동일 파일이라서 호출 가능
    return 0;
}

static 키워드를 사용한 함수는 그 함수가 정의된 파일 내에서만 접근할 수 있고 다른 파일에서는 호출할 수 없습니다.


5. 인코딩

인코딩은 데이터를 컴퓨터에서 처리할 수 있는 형식으로 변환하는 과정
문자열을 ASCII 또는 UTF-8 형식으로 인코딩할 수 있고 C에서 문자열을 처리할 때 char 배열을 사용합니다

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";  //ASCII 인코딩 문자열
    printf("%s\n", str);  //출력
    return 0;
}

문자열은 내부적으로 바이트 형태로 저장되며, 해당 문자열이 어떤 인코딩 방식으로 저장되는지에 따라 데이터 처리 방식이 달라집니다.


6. 매개변수

함수가 호출될떄 전달 받는 값

int add(int a, int b) {  //매개변수 = a, b
    return a + b;
}

int main() {
    int result = add(3, 4);  //3, 4는 매개변수로 전달
    printf("Sum: %d\n", result);  
    return 0;
}

함수 add()는 a와 b라는 매개변수를 받아 덧셈을 수행하고 main() 함수에서 이 값을 전달합니다


7. 토큰

토큰은 소스 코드에서 의미 있는 단위로, 키워드, 변수명, 숫자, 연산자 등이 포함

int sum = 5 + 3;  //int, sum, =, 5, +, 3은 각각 토큰임

8. 스코프 (Scope)

지역변수 (Local Variable): 함수 내에서 선언된 변수로, 해당 함수 내에서만 사용 가능합니다.

void test() {
    int localVar = 10;  //지역변수
    printf("%d\n", localVar);
}

전역변수 (Global Variable): 함수 외부에서 선언된 변수로, 프로그램 내 모든 함수에서 사용 가능합니다

int globalVar = 20;  // 전역변수

void test() {
    printf("%d\n", globalVar);  //전역변수 사용
}

int main() {
    test();
    return 0;
}

여기서 globalVar는 전역변수이고 프로그램 내 모든 함수에서 접근 가능

localVar는 test() 함수 내에서만 유효한 지역변수임

'C언어 > 시큐어코딩' 카테고리의 다른 글

[PRE00-C] ~ [PRE10-C]  (0) 2025.03.13
매크로 함수 VS 인라인 함수  (0) 2025.03.13