Super Group For 4 IT
 
IndexPortalCalendarTrợ giúpTìm kiếmThành viênĐăng kýĐăng Nhập
Mong các bạn xem và góp ý dùm mình. http://sgit4.forum-viet.net/forum-f2/topic-t64.htm....Thanks tất cả... ZHE64848 ZHE6448 .*** :hsjs67yw37yw:ZHE6448***
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» English Tooltip 3.0
Thu Sep 15, 2011 8:38 pm by Admin

»  Cho cuộc sống..Ngày hôm nay!
Wed Apr 20, 2011 5:23 pm by gianggiangonline

» Giáo trình C cực hay và cơ bản...
Fri Apr 08, 2011 11:58 am by Admin

» C618311R12
Sat Mar 19, 2011 2:25 pm by Admin

» Cách nhìn mới về cuộc sống
Wed Mar 16, 2011 3:32 pm by gianggiangonline

» Bài giải C #
Mon Mar 07, 2011 12:06 am by Admin

» Lịch học chính trị cuối khóa
Sun Feb 13, 2011 9:41 am by cuong_handsome

» Tìm hiểu về RED5
Thu Jan 20, 2011 4:49 pm by Admin

» Giúp đỡ anh em tìm hiểu các chức năng của Forum........
Thu Jan 20, 2011 10:14 am by gianggiangonline

Navigation
 Portal
 Diễn Đàn
 Thành viên
 Lý lịch
 Trợ giúp
 Tìm kiếm

Share | 
 

 Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
hieutin4
Tập bò
Tập bò


Tổng số bài gửi : 4
Điểm_Cấp_Bậc : 13
Cấp bậc : 1
Join date : 06/04/2010

Bài gửiTiêu đề: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Tue Apr 06, 2010 6:25 pm

Nếu bạn không có làm việc với nhiều người, bạn không xây dựng các chương trình C/C++ gồm nhiều người, không xây dựng các chương trình C/C++ bởi nhiều modulus, nhiều file ghép lại. thì có lẽ điều sau đây, bạn chưa cần quan tâm lắm.

Để chúng ta có thể xây dựng lên một chương trình C/C++ lớn, bao gồm nhiều người cùng xây dựng, ... Những vấn đề sau, có lẽ sẽ là những vấn đề cần quan tâm tới

Trong C/C++, dấu thăng (#) được gọi là Preprocessor operator (Tạm dịch để hiểu là: Toán tử tiền xử lý)

Preprocessor directives gồm có: (Việt Nam thường được gọi là: Các chỉ thị tiền xử lý)

Code:
# (null directive) #ifdef
#define #ifndef
#elif #include
#else #line
#endif #if
#error #undef
#pragmaVà một vài directive ở VC++ nữa là: #using, #import

Các bài sau, Dr sẽ giới thiệu sơ sơ về cách sử dụng Preprocessor directive, và ứng dụng cụ cụ thể như thế nào. OK?
#include

Đây là chỉ thị bao gộp. Thông thường khi bắt đầu học C/C++ bạn cũng đã biết đến directive này, với ý nghĩa bao gộp một tệp nào đó.

C code:Lựa chọn code | Ẩn/Hiện code
Syntax (Cú pháp):
#include <header_name>
#include "header_name"
#include macro_identifierVí dụ 1:
C code:Lựa chọn code | Ẩn/Hiện code
#include <stdio.h>
#include <iostream>Ví dụ 2:
C code:Lựa chọn code | Ẩn/Hiện code
#include "MyConio.h"
#include "MyConsoleIO"Ví dụ 3:
C code:Lựa chọn code | Ẩn/Hiện code
#define MyHeaderFile "D:\BORLANDC\MYFOLDER\MyConio.H"
/*OK */
#include MyHeaderFileVề cơ bản #include directive dùng để bao gộp một file code nào đó. Trước khi biên dịch, Compiler sẽ tìm file này, sau đó chèn vào file nguồn tại vị trí đặt #include. Nếu không tìm thấy thì sẽ báo lỗi: Unable to open include file "header_name"

Các vấn đề khác về #include sẽ được nói đến ở một phần khác.

#define


Code:
Syntax:
#define macro_identifier <token_sequence>#define directive định nghĩa một macro. Macro cung cấp cho ta một kỹ thuật thay thế có hoặc không có 'bộ' chính thức, thay thế giống các tham số của hàm.

Nguyên bản: The #define directive defines a macro. Macros provide a mechanism for token replacement with or without a set of formal, function-like parameters.

Một token_sequence rỗng sẽ cho kết quả là macro identifier sẽ không được sử dụng trong mã nguồn.

Ví dụ:
C code:Lựa chọn code | Ẩn/Hiện code
#define Hi "Have a nice day!" // Thay thế chuỗi "Have a nice day!" bởi macro Hi

#define STDIO #include<stdio.h> //Chú ý: Không được có khoảng trắng giữa các macro. Định nghĩa: #define STD IO #include<stdio.h> là không được như muốn

#define EMPTY // Nếu trong mã nguồn có EMPTY, nó sẽ không được sử dụng.

#define max(a,b) ((a)>(b)?(a):(b))
Trích dẫn:
Chú ý: Không để các khoảng trắng như thế này max (a,b) để định nghĩa hàm max(a,b) như trên.
Nên đưa vào cặp () trong biểu thức để macro sử dụng được an toàn.
Đối của macro không khai báo kiểu, nên hàm macro được định nghĩa, có thể dùng với bất cứ kiểu dữ liệu nào

Một số tình huống với #define

Tình huống 1:
C code:Lựa chọn code | Ẩn/Hiện code
#define MAX 1000

printf("MAX"); // Sẽ in lên màn hình là MAX chứ không phải là 1000Tình huống 2:
C code:Lựa chọn code | Ẩn/Hiện code
#define product(x,y) x*y

product(5+6,10); //sẽ cho kết quả là 5+6*10=65 chứ không phải là 110.Định nghĩa một khối lệnh:
Nghiên cứu thông qua ví dụ sau:
C code:Lựa chọn code | Ẩn/Hiện code
#define HelloWorld {
clrscr();
printf("Hello world!");
printf("\nChao mung ban den voi cong dong C Viet");
}

//Cách sử dụng:
int main()
{
HelloWorld
return 0;
}Hoặc ví dụ:
C code:Lựa chọn code | Ẩn/Hiện code
#define EXIT {printf("\The End"); exit(0);} // Tạo câu lệnh để thoát chương trìnhTình huống không tốt:
Nếu bạn không có cặp dấu {} bọc các khối lệnh lại, sẽ gặp phải tình huống không như muốn. Ví dụ:
C code:Lựa chọn code | Ẩn/Hiện code
#define EXIT printf("\The End"); exit(0);

Sử sụng:
if(a==0) EXIT // Sẽ không cho kết quả như mong muốn. a!=0 nó vẫn thoát chương trình.
Câu lệnh trên sẽ hiểu là: if(a==0) printf("\The End"); exit(0);Để dễ hình dung, bạn cứ hình dung về #define directive như sau:
#define A B // Thay thế B bởi A. Trong mã nguồn có A, thì compiler sẽ hiểu chỗ đó có nghĩa là B. A và B cách nhau bằng một khoảng trắng

#undef


Code:
Syntax:
#undef macro_identifierBạn có thể bỏ định nghĩa(undefine) một macro bằng sử dụng #undef directive. #undef bỏ đi bất cứ token_sequence trước đó từ macro_identifier; macro_definition đã bị quên, và macro_identifier là coi như chưa được định nghĩa. Không có macro_identifier mở rộng nào trong phạm vi của dòng chứa #undef.

Sau khi một macro_identifier đã được bỏ định nghĩa(undefined), nó có thể được định nghĩa lại với #define, sử dụng giống hoặc khác token_sequence.

Ví dụ:
C code:Lựa chọn code | Ẩn/Hiện code
#define BLOCK_SIZE 512 //Định nghĩa BLOCK_SIZE = 512
//Làm cái gì đó với BLOCK_SIZE đã được định nghĩa.

#undef BLOCK_SIZE

#define BLOCK_SIZE 256 //Định nghĩa lại BLOCK_SIZE, sau khi đã bỏ định nghĩa ở trên.
Trích dẫn:
Lưu ý:Các câu lệnh của preprocessor directive không có dấu kết thúc câu lệnh ( ; ) ở cuối

còn nữa các bạn tự ngiên cứu nhé
__________________

__________________
Về Đầu Trang Go down
thangbomhu
Tập bú sữa
Tập bú sữa


Tổng số bài gửi : 1
Điểm_Cấp_Bậc : 1
Cấp bậc : 0
Join date : 12/04/2010
Age : 30
Đến từ : hai phong

Bài gửiTiêu đề: Re: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Mon Apr 12, 2010 7:10 pm

ko hieu gi ca
Về Đầu Trang Go down
hungmittq
Nghiên Cứu Sinh
Nghiên Cứu Sinh


Tổng số bài gửi : 43
Điểm_Cấp_Bậc : 76
Cấp bậc : 0
Join date : 05/04/2010
Age : 26
Đến từ : Tuyên Quang

Bài gửiTiêu đề: Re: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Tue Apr 13, 2010 4:10 pm

Đúng là hiếu có khác. post bài nào anh em không hiểu bài đấy luôn, khó quá.

_________________
DHUNG
Về Đầu Trang Go down
Admin
Phó Giáo Sư
Phó Giáo Sư


Tổng số bài gửi : 153
Điểm_Cấp_Bậc : 342
Cấp bậc : 16
Join date : 04/04/2010
Age : 27
Đến từ : Viet Nam

Bài gửiTiêu đề: Re: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Tue Apr 13, 2010 4:29 pm

Thật khủng...
Heheh...
Phải Thanks Hùng mới được, heheh.. Lên 1 cấp đấy....
:ZH67G

_________________
Nhấn Thanks đê bà con....
Hehehe...

Về Đầu Trang Go down
http://vn.360plus.yahoo.com/buixuantruong_89/
phamxuantuong
Kỹ Sư
Kỹ Sư


Tổng số bài gửi : 56
Điểm_Cấp_Bậc : 98
Cấp bậc : 3
Join date : 09/04/2010
Age : 26
Đến từ : hải dương

Bài gửiTiêu đề: Re: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Fri Apr 16, 2010 4:38 pm

Trời ơi mấy bài ông Hiếu đưa lên tôi càng đọc càng không hiểu, ông ơi đưa cái gì nó dễ dễ chút cho anh em còn ngâm cứu, chứ đưa mấy cái này lên thi chịu hẳn ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643 ZHE643
Về Đầu Trang Go down
Sponsored content




Bài gửiTiêu đề: Re: Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C   Today at 1:18 am

Về Đầu Trang Go down
 

Các preprocessor directive, xây dựng file header, Macro, và tổ chức chương trình C

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Super Group For 4 IT :: CLB Học Tập :: Kì 4 :: Kĩ Thuật Lập Trình-