2013年7月4日

摘要: int snprintf(char *restrict buf, size_t n, const char * restrictformat, ...);函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。Result1(推荐的用法)#include #include int main(){ char str[10]={0,}; snprintf(str, sizeof(str), "0123456789012345678"); printf(&qu 阅读全文
posted @ 2013-07-04 14:24 小葫芦藤 阅读(1906) 评论(0) 推荐(0)
摘要: C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warning: " #EXP "/n"); } / while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF ( 阅读全文
posted @ 2013-07-04 13:56 小葫芦藤 阅读(461) 评论(0) 推荐(0)
摘要: gcc 的visibility使用(zz)-fvisibility=default|internal|hidden|protectedgcc的visibility是说,如果编译的时候用了这个属性,那么动态库的符号都是hidden的,除非强制声明。1.创建一个c源文件,内容简单#include#include__attribute((visibility("default"))) void not_hidden(){printf("exported symbol\n");}void is_hidden(){printf("hiddenone\n& 阅读全文
posted @ 2013-07-04 13:30 小葫芦藤 阅读(1230) 评论(0) 推荐(0)

导航