Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: #define()

  1. #1
    Ngày gia nhập
    09 2018
    Bài viết
    2

    Mặc định Không hiểu ý nghĩa của đoạn code này #define()

    Chào tất cả anh chị e trong diễn đàn !
    Em mới học lập trình c gặp đoạn code sau không hiểu ý nghĩa của nó. Mong mọi người giúp đỡ! (Em đang học lập trình c cho vi điều khiển ARM)

    #define IS_GPIO_ALL_PERIPH(PERIPH)
    (((PERIPH) == GPIOA) || \
    ((PERIPH) == GPIOB) || \
    ((PERIPH) == GPIOC) || \
    ((PERIPH) == GPIOD) || \
    ((PERIPH) == GPIOE) || \
    ((PERIPH) == GPIOF) || \
    ((PERIPH) == GPIOG))
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi thinbumbum : 23-07-2019 lúc 08:37 PM.

  2. #2
    Ngày gia nhập
    11 2014
    Bài viết
    85

    Đây là macro của C. Trong quá trình preprocess thì những chỗ nào mà gọi hàm MACRO vế trái:
    IS_GPIO_ALL_PERIPH(PERIPH)

    Thì compiler sẽ thay thế bằng điều kiện vế bên phải:
    (((PERIPH) == GPIOA) || \
    ((PERIPH) == GPIOB) || \
    ((PERIPH) == GPIOC) || \
    ((PERIPH) == GPIOD) || \
    ((PERIPH) == GPIOE) || \
    ((PERIPH) == GPIOF) || \
    ((PERIPH) == GPIOG))

    Anh lấy ví dụ:
    #define SUM(A, B) (A + B)

    int s = SUM(4, 5);

    Quá trình preprocess sẽ thay SUM(4, 5) = (4 + 5);
    -> int s = (4 + 5);

    Đây là cách làm việc của preprocessor. Em tham khảo video bên dưới để hiểu thêm nhé:
    Học lập trình bắt đầu từ đâu ?

    https://www.youtube.com/HWStudio2019

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    3,331

    Rất tốt, nhưng làm sao để thấy được nó: .i file Preprocessed Source?
    C++ Code:
    1. #define used_HQ
    2.  
    3. #include<iostream>
    4. using namespace std;
    5.  
    6. void nhap( int n, int a[]){
    7.     for(int i = 0; i < n; i++){
    8.         cout<< "Nhap phan tu thu ["<< i <<"]: "; cin>> a[i];
    9.     }
    10. }
    11. void xuat( int n, int a[]){
    12.     for(int i = 0; i < n; i++)
    13.         cout<< a[i]<<" ";
    14.     cout<< endl;
    15. }
    16.  
    17. void selectionsort( int a[], int n, int i){
    18. #ifdef used_HQ
    19.     //cout<< "Hoi quy!\n";
    20.     if(i == n - 1) return;
    21.    
    22.     int min = a[i]; //min
    23.     for(int j = i + 1; j < n; j++){
    24.         if(a[j] < min){
    25.             min = a[j];
    26.             swap(a[j], a[i]);
    27.         }
    28.     }          
    29.     selectionsort(a, n, i + 1);
    30. #else
    31.     //cout<< "Loop - for!\n";
    32.     for (i = 0; i < n - 1; i++) {
    33.         int min = a[i]; //min
    34.         for (int j = i + 1; j < n; j++)
    35.             if (a[j] < min) {
    36.                 min = a[j];            
    37.                 swap(a[j], a[i]);
    38.             }
    39.     }                    
    40. #endif
    41. }
    42.  
    43. int main(){
    44.     int i = 0, n;  
    45.     cout << "Nhap so phan tu: "; cin>> n;
    46.     int a[n]; //biên dịch với MinGW hoặc Embarcadero
    47.  
    48.     nhap(n, a);
    49.     selectionsort(a, n, i);
    50.     xuat(n, a);
    51.     //
    52.     return 0;
    53. }
    http://diendan.congdongcviet.com/threads/t400425::ctdl-giai-thuat-dung-de-lam-gi.cpp

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    3,331

    programmer2014, nếu chưa rõ thì hỏi, trong i tờ chi phí kiểm chứng không cao.

    còn nghe hơi nồi chõ thì không đáng tin cậy
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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