Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

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

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

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

    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
    #pragma
    Và 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?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #include

    #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:
    1. Syntax (Cú pháp):
    2. #include <header_name>
    3. #include "header_name"
    4. #include macro_identifier

    Ví dụ 1:
    C Code:
    1. #include <stdio.h>
    2. #include <iostream>

    Ví dụ 2:
    C Code:
    1. #include "MyConio.h"
    2. #include "MyConsoleIO"

    Ví dụ 3:
    C Code:
    1. #define MyHeaderFile "D:\BORLANDC\MYFOLDER\MyConio.H"
    2. /*OK */
    3. #include MyHeaderFile

    Về 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.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #define

    #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:
    1. #define Hi "Have a nice day!" // Thay thế chuỗi "Have a nice day!" bởi macro Hi
    2.  
    3. #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
    4.  
    5. #define EMPTY // Nếu trong mã nguồn có EMPTY, nó sẽ không được sử dụng.
    6.  
    7. #define max(a,b) ((a)>(b)?(a):(b))
    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:
    1. #define MAX 1000
    2.  
    3. printf("MAX"); // Sẽ in lên màn hình là MAX chứ không phải là 1000
    Tình huống 2:
    C Code:
    1. #define product(x,y) x*y
    2.  
    3. 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:
    1. #define HelloWorld {
    2.                             clrscr();
    3.                             printf("Hello world!");
    4.                             printf("\nChao mung ban den voi cong dong C Viet");
    5.                        }
    6.  
    7. //Cách sử dụng:
    8. int main()
    9. {
    10.    HelloWorld
    11.    return 0;
    12. }

    Hoặc ví dụ:
    C Code:
    1. #define EXIT {printf("\The End"); exit(0);} // Tạo câu lệnh để thoát chương trình

    Tì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:
    1. #define EXIT printf("\The End"); exit(0);
    2.  
    3. Sử sụng:
    4. 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.
    5. 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
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #undef

    #undef

    Code:
    Syntax:
    #undef macro_identifier
    Bạ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:
    1. #define BLOCK_SIZE 512 //Định nghĩa BLOCK_SIZE = 512
    2. //Làm cái gì đó với BLOCK_SIZE đã được định nghĩa.
    3.  
    4. #undef BLOCK_SIZE
    5.  
    6. #define BLOCK_SIZE 256 //Định nghĩa lại BLOCK_SIZE, sau khi đã bỏ định nghĩa ở trê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
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #line

    #line

    Text Code:
    1. Syntax:
    2. #line integer_constant  <"filename">

    #line directive dùng để chỉ định line numbers trong một chương trình đối với việc tham chiếu chéo(cross-reference) và báo cáo lỗi (error reporting). Nếu chương trình của bạn có một phần nằm ở một vài file khác, thì #line directive rất hữu ích cho việc đánh dấu phần đó với line numbers từ file ghép lại.

    Ví dụ 1:

    C Code:
    1. /**
    2.  ** This example illustrates #line directives.
    3.  **/
    4.  
    5. #include <stdio.h>
    6. #include <conio.h>
    7. #define LINE200 200
    8. #line 100
    9. void func_1()
    10. {
    11.    clrscr();
    12.    printf("Func_1 - the current line number is %d\n",__LINE__);
    13. }
    14.  
    15. #line LINE200
    16. void func_2()
    17. {
    18.    printf("Func_2 - the current line number is %d\n",__LINE__);
    19. }
    20. int main(void)
    21. {
    22.    func_1();
    23.    func_2();
    24.    getch();
    25.  
    26. }

    Ví dụ 2:

    Bạn tạo một file test.h có nội dung như sau:
    C Code:
    1. //This is header file: test.h.
    2. // Path: D:\BORLANDC\INCLUDE
    3. /***************************
    4.  ***************************
    5.  **************************/
    6. int x, y;
    7. int a;
    8.  
    9. //some thing

    Rồi lưu nó vào thư mục "D:\BORLANDC\INCLUDE", với cái tên là test.h

    Rồi thử compiling đoạn chương trình sau:
    C Code:
    1. /**
    2.  ** This example illustrates #line directives.
    3.  **/
    4.  
    5. #include <stdio.h>
    6. #line 5 "D:\BORLANDC\INCLUDE\test.h"
    7. int main(void)
    8. {
    9.    a=5; // Báo lỗi: test.h(7,6):Undefined symbol 'a'
    10.    return 0;
    11. }

    Khi đó sẽ nhận được thông báo lỗi: test.h(7,6):Undefined symbol 'a'

    Để hiểu hơn về #line directive. Các bạn chạy thử 2 code trên rồi sẽ rõ hơn nhiều. Dr cũng không nắm rõ hết tác dụng của directive này, các bạn vui lòng bổ sung thêm nếu thấy nó có tác dụng.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    10 2006
    Bài viết
    107

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

    #line (Bổ sung)

    - Trước khi tìm hiểu về chỉ thị tiền xử lý này các bạn phải biết công dụng của Macro __LINE__ sau trong C (Macro này cho phép in ra số thứ tự của dòng được trình biên dịch nhận biết trong mã nguồn).

    1. __LINE__ không có chỉ thị tiền xử lý :
    C Code:
    1. int main(void) { // line đầu tiên là line 1
    2.    printf("Dòng hiện tại là: %d", __LINE__); // line 2
    3.    return 0; // line 3
    4. }
    5. // Kết quả : Dòng hiện tại là 2

    2. __LINE__ với chỉ thị tiền xử lý #line :
    C Code:
    1. #line 50 // Chỉ thị tiền xử lý ở đây nè T_T
    2. int main(void) { // line 50
    3.    printf("Dòng hiện tại là: %d", __LINE__); // line 51
    4.    return 0; // line 52
    5. }
    6. // Kết quả : Dòng hiện tại là 51

    - Mục đích sử dụng : Dành cho quá trình debug đặc biệt trong chương trình C

    P/C : To DR, đã xài được trong C thì sang C++ cũng xài được, cái này khỏi nhắc chắc mọi người đều biết mà.
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 10-03-2008 lúc 12:25 AM. Lý do: Đã sửa lại một chút
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #if, #elif, #else, và #endif

    Cảm ơn Solokop đã bổ sung nhé. Dr đã mạn phép sửa lại một chút ở bài viết của bạn.

    Bữa nào có điều kiện, Dr chỉ viết một tut về các Macros đã được định nghĩa sẵn của C và C++, như là macro __LINE__ đã nêu ở trên.
    Nhân đây Dr cũng lưu ý luôn:
    - Các preprocessor directive này có thể sử dụng ở cả C++, chứ không riêng gì ở C.
    - preprocessor directive, Dr giữ nguyên vì dịch sang tiếng Việt sẽ bị mất nghĩa nguyên bản của nó. Sau này ứng dụng nhiều sẽ thấy điều này.
    - line numbers, dịch sang tiếng Việt sẽ dễ hiểu sai. Chính vì lý do đó, Dr tạm thời để nguyên bản mà không dịch
    Ở bài này, chúng ta nghiên cứu đến tác dụng của các directive: #if, #elif, #else, và #endif.

    Đây là các directive rất mạnh mẽ. Nhưng nếu các bạn đã có cơ bản kiến thức về lập trình thì lại rất dễ hiểu. Trước khi đi vào vấn đề chính, Dr xin giải thích một chút, để các bạn nhớ tốt hơn về chúng như sau:

    Text Code:
    1. #if          Hiểu là If,
    2. #elif        Hiểu là Else If
    3. #else        Hiểu là else
    4. #endif       Hiểu là End If

    Bài viết ngay sau đây, Dr sẽ cụ thể về các directive này.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #if, #elif, #else, và #endif.

    #if, #elif, #else, và #endif. (Tiếp theo)

    Code:
    Syntax
    #if constant-expression-1 
         <section-1>
    #elif constant-expression-2 
         <newline section-2>
      .
      .
      .
    #elif constant-expression-n 
        <newline section-n>
    #else 
        <newline final-section>
    #endif
    Đây là các conditional directives (Các chỉ thị có điều kiện) nó làm việc cũng giống như các conditional operators (Các toán tử có điều kiện) thông thường của ngôn ngữ C.

    Nếu constant-expression-1 ==true thì toàn bộ nội dung của cú pháp trên sẽ được thay thế bởi <section-1> (kể cả các khoảng trống). <section-1> có thể là một lệnh preprocessor, một dòng mã nguồn thường, một macro, ...
    Nếu constant-expression-1 == false thì <section-1> sẽ bị bỏ qua, cấu trúc xét đến constant-expression-2 sau #elif, cứ như vậy cho đến kết thúc.

    Cấu trúc được kết thúc bởi directive #endif.

    Ví dụ: (Lấy luôn ví dụ trong các file header của Borland)

    C Code:
    1. #if !defined(___DEFS_H)    // Nếu chưa định nghĩa ___DEFS_H
    2.    #include <_defs.h>      // Bao gộp file _defs.h
    3. #elif __STDC__             // Còn Nếu __STDC__ là true
    4.     #define _Cdecl         // Định nghĩa _Cdecl
    5. #else                      // Còn lại
    6.     #define _Cdecl  cdecl  // Định nghĩa _Cdecl với nghĩa là cdecl
    7. #endif                     //Kết thúc #If

    Với ví dụ trên, có lẽ sẽ khiến nhiều người khó hiểu nhưng thực ra là không có gì cả. DR giải thích một cái, các bạn tự hiểu những cái khác nhé!

    #if !defined(___DEFS_H)
    //___DEFS_H là một macro, do programmer đặt ra, sở dĩ nhó có nhiều dấu gạch dưới là để tránh việc trùng lặp với tên do người viết mã khác đặt ra. Với mã nguồn thì cái macro này chỉ có duy nhất một ý nghĩa đó là: Nhận dạng xem file _defs.h đã được bao gộp chưa mà thôi. Nếu bao gộp rồi thì thôi không bao gộp nữa!

    Các bạn cứ hiểu từ từ, và đơn giản hóa vấn đề một chút, bạn sẽ hiểu hết ý nghĩa của nó.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  9. #9
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #if, #elif, #else, và #endif.

    #if, #elif, #else, và #endif. (Tiếp theo)

    Ở trên Dr mới nói đến đó là cú pháp đầy đủ của các directive conditational này. Có thể điều đó sẽ khiến cho nhiều người khó hiểu, Dr sẽ bổ sung thêm một chút:

    Bạn có thể có các cấu trúc đơn giản như sau:

    Cấu trúc đơn giản loại 1:
    Text Code:
    1. Syntax:
    2. #if constant-expression-1
    3.     <section-1>              
    4. #endif

    Nếu constant-expression-1 đúng thì <section-1> được đưa vào mã nguồn. Nếu sai thì bỏ qua

    Ví dụ:
    C Code:
    1. Example:
    2. #if MAX>200
    3.    printf("Đưa vào mã nguồn dòng này. Ứng với MAX>200");
    4. #endif

    Cấu trúc đơn giản loại 2:
    Text Code:
    1. Syntax:
    2. #if constant-expression-1
    3.     <section-1>
    4. #elif constant-expression-2
    5.     <newline section-2>
    6. #endif

    Nếu constant-expression-1 đúng thì <section-1> được đưa vào mã nguồn. Nếu sai thì xét constant-expression-2, nếu constant-expression-2 đúng thì <section-2> được đưa vào mã nguồn. Nếu cả 2 cùng sai thì bỏ qua, nghĩa là không có thứ gì được đưa vào mã nguồn để biên dịch hết.

    Ví dụ:
    C Code:
    1. Example:
    2. #if MAX>200
    3.     printf("Đưa vào mã nguồn dòng lệnh này, Ứng với MAX>200");
    4.     printf("\nDòng lệnh này, nếu có cũng ứng với điều kiện MAX>200");
    5. #elif MAX<=200
    6.      printf("Đưa vào mã nguồn dòng lệnh này, Ứng với MAX<=200");
    7. #endif

    Ngoài ra nó còn có các cấu trúc conditional directive lồng nhau, nó hoàn toàn không khác gì với các cấu trúc của câu lệnh điều kiện thông thường ở ngôn ngữ C mà bạn đã học. Chỉ có điều là nó không có cặp dấu {} để bọc khối lệnh mà khối lệnh, nhưng có thêm #endif để báo kết thúc #if directive conditional này. Rất đơn giản, phải không nào?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  10. #10
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định #ifdef và #ifndef

    Code:
    Syntax:
    #ifdef identifier 
    #ifndef identifier
    #ifdef và #ifndef là các chỉ thị dó điều kiện (conditional directives), cho bạn kiểm tra một identifier đã được định nghĩa hay chưa.

    Nếu chưa được định nghĩa hoặc đã gỡ bỏ định nghĩa của identifier thì:
    #ifdef identifier tương đương với #if 0
    #ifndef identifier tương đương với #if 1

    Nếu identifier đã được định nghĩa rồi, nó vẫn còn hiệu lực thì:
    #ifdef identifier tương đương với #if 1
    #ifndef identifier tương đương với #if 0

    Ghi chú: identifier nghĩa là một từ định danh nào đó. Ví dụ MAX, BORDER, ...
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. Kỹ thuật C++ Có được viết hàm vào file header không ?
    Gửi bởi chicken_uet trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 18-03-2013, 10:59 PM
  2. Kỹ thuật C++ Lỗi Add directive to 'stdafx.h' or rebuild precompiled header trong Visual C++ 2008?
    Gửi bởi lightning trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 13-04-2011, 05:25 PM
  3. Quản lý source code C++ | Chia nhỏ các file .cpp, sử dụng file header
    Gửi bởi thongcam87 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-11-2008, 05:50 PM
  4. Header file in C
    Gửi bởi legenday trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 27-12-2007, 12:51 AM
  5. Lần đầu tạo 1 app đã gặp lỗi về file header !
    Gửi bởi kidkid trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 8
    Bài viết cuối: 12-05-2007, 03:50 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn