#define

 

#define SOS(x)          \
       printf("SOS\n"); \
       do_something(x);
将宏所定义的多条表达式放在大括号中
#define SOS(x) {        \
       printf("SOS\n"); \
       do_something(x);
    }
  
for (int index = 0; index < SIZE; index++)
    SOS(index)
    
if (1 == age)
    SOS(age);
else
    SOS(10);
结果还是不能正确使用
#define SOS(x) do {        \
       printf("SOS\n"); \
       do_something(x);
    } while(0)

 

#include <stdio.h>
#include <malloc.h>

void main() {
    int* p = malloc(-1);
    *p = 1;
    //printf("size:%lu\n", );
}

调用格式化I/O函数时,不要直接或者间接将用户输入作为格式化字符串的一部分或者全部
printf(input); //不允许将用户输入直接作为格式字符串
printf(“%s”, input); //推荐的方式


sprintf( buffer, "Usage: %s argument\n", argv[0] );
sprintf(buffer, "Usage: %.100s argument\n", argv[0]); //字符串加上精度说明符:最多只能拷贝100个字符,防止缓冲区溢出

posted @ 2017-02-27 21:56  牧 天  阅读(283)  评论(0)    收藏  举报