Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm static trong C

Hàm static trong C có phạm vi (scope) giới hạn trong file object của nó. Nghĩa là chỉ nhìn thấy trong file .c định nghĩa nó. Khai báo bằng từ khóa static trước tên hàm.

Minh họa đa file

File first_file.c:

static void staticFunc(void) {
    printf("Trong ham static staticFunc()");
}

File second_file.c:

int main() {
    staticFunc(); // Lỗi linker: undefined reference to staticFunc()
    return 0;
}

Biên dịch sẽ báo lỗi vì staticFunc() chỉ hiển thị trong object file của first_file.c.

Ví dụ đúng (cùng file)

#include <stdio.h>

static void staticFunc(void) {
    printf("Trong ham static staticFunc()");
}

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

Kết quả

Trong ham static staticFunc()

Giải thích: Hàm staticFunc() là static, in thông báo. main() gọi nó. Chương trình chạy đúng vì gọi trong cùng file (cùng object file).

Ứng dụng

  • Ẩn hàm helper nội bộ, tránh xung đột tên khi link nhiều file.
  • Tăng tính đóng gói (encapsulation) ở cấp file trong C.
  • Cho phép compiler tối ưu hóa tốt hơn (inline, loại bỏ dead code).