assert.h trong C

Header file có tên assert.h của Thư viện C cung cấp một macro gọi là assert có thể được sử dụng để kiểm tra một giả định được tạo bởi chương trình và in một thông báo chẩn đoán tìm lỗi nếu giả định này là false.

Macro được định nghĩa trước assert này tham chiếu tới macro khác là NDEBUG mà không là một phần của <assert.h>. Nếu NDEBUG được định nghĩa như là một tên macro trong source file, tại nơi mà <assert.h> được bao, thì assert được định nghĩa như sau:

#define assert(ignore) ((void)0)

Các macro được định nghĩa trong assert.h

Trong assert.h chỉ định nghĩa một macro sau:

void assert(int expression): Đây thực sự là một macro và không là một hàm. Macro này được sử dụng để thêm các chẩn đoán tìm lỗi trong chương trình C.

Macro assert() trong C

Hàm assert() trong C

Macro void assert(int bieu-thuc) trong Thư viện C chuẩn cho phép các thông tin chẩn đoán phát hiện được ghi tới tệp lỗi chuẩn (Standard Error File). Nói cách khác, nó có thể được sử dụng để thêm các thông báo chẩn đoán tìm lỗi trong lập trình C.

Khai báo hàm assert() trong C

Dưới đây là phần khai báo cho assert() Macro trong Thư viện C chuẩn.

void assert(int bieu-thuc);

Tham số

bieu-thuc: Đây có thể là một biến hoặc bất cứ biểu thức C nào. Nếu bieu-thuc ước lượng là TRUE, thì assert() không làm điều gì. Nếu bieu-thuc ước lượng là false, thì assert() hiển thị một thông báo lỗi trên stderr và ngừng thực thi chương trình.

Giá trị trả về

Macro này không trả về bất cứ giá trị nào.

Ví dụ

Chương trình C sau minh họa cách sử dụng của assert() macro trong Thư viện C:

#include <assert.h>
#include <stdio.h>
int main()
{
   int a;
   char str[50];
	 
   printf("Nhap mot gia tri nguyen: \n");
   scanf("%d", &a);
   assert(a >= 10);
   printf("Gia tri nguyen vua nhap la %d\n", a);
    
   printf("Nhap mot chuoi: ");
   scanf("%s", &str);
   assert(str != NULL);
   printf("Chuoi vua nhap la: %s\n", str);
	
   return(0);
}

Biên dịch và chạy chương trình trên để xem kết quả: