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 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,200

    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,200

    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

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