IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    你的嵌入式软件的功力如何?

    TacuLee发表于 2015-04-17 05:16:03
    love 0

    1. #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

    2. 三重条件操作符这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

    3. #error

    4. 怎么样用C编写死循环呢?

    while(1){}
    
    for(;;){}
    
    Loop:
    ...
    goto Loop;

    5.

    • a) int a; // An integer
    • b) int *a; // A pointer to an integer
    • c) int **a; // A pointer to a pointer to an integer
    • d) int a[10]; // An array of 10 integers
    • e) int *a[10]; // An array of 10 pointers to integers
    • f) int (*a)[10]; // A pointer to an array of 10 integers
    • g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
    • h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

    6.

    • const int a;
    • int const a;
    • const int *a;
    • int * const a;
    • int const * a const;

    7.

    int square(volatile int *ptr)
    {
       int a,b;
       a = *ptr;
       b = *ptr;
       return a * b;
    }

    8.

    #define BIT3 (0x1<<3) 
    static int a; 
    void set_bit3(void) 
    { 
        a |= BIT3; 
    } 
    
    void clear_bit3(void) 
    {
        a &= ~BIT3; 
    }

    9.

    int *ptr; 
    ptr = (int *)0x67a9; 
    *ptr = 0xaa55; 
    
    *(int * const)(0x67a9) = 0xaa55;

    10.

    __interrupt double compute_area (double radius) 
    { 
        double area = PI * radius * radius; 
        printf(" Area = %f", area); 
        return area; 
    } 
    
    有多少错误?

    11.

    void foo(void) 
    { 
        unsigned int a = 6; 
        int b = -20; 
       (a+b > 6) ?puts("> 6") : puts("<= 6"); 
    }

    12.

    if ((ptr = (char *)malloc(0)) == NULL) 
        puts("Got a null pointer"); 
    else 
        puts("Got a valid pointer");

    未经允许不得转载:TacuLee » 你的嵌入式软件的功力如何?



沪ICP备19023445号-2号
友情链接