共 45 篇文章 |
|
/* 把类似printf的消息传递给stderr 并退出 */extern void die(const char *format, ...) __attribute__((noreturn)) __attribute__((format(printf, 1, 2))); 或者写成 extern void die(const char *format, ...) __attribute__((noreturn, format(printf, 1, 2))); 如果带有该属性的自定... 阅46 转0 评0 公众公开 18-03-09 14:42 |
上面的定义等同于struct stu{char sex;int length;char name[10];}__attribute__ ((packed)); struct stu my_stu; __attribute__((packed))得变量或者结构体成员使用最小的对齐方式,即对变量是一字节对齐,对域(field)是位对齐.五、什么时候需要设置对齐在设计不同CPU下的通信协议时,或者编写硬件驱动程序时寄存器的结构这两个地方都需要按... 阅48 转2 评0 公众公开 18-03-09 13:27 |
// compare type at run time of two objects if (typeid(*bp) == typeid(*dp)) { // bp and dp point to objects of the same type } // test whether run time type is a specific type if (typeid(*bp) == typeid(Derived)) { // bp actually points to a Derived }bool operator==(const Base&, const Base&) bool operator==(cons... 阅1876 转1 评0 公众公开 17-08-22 10:17 |
5. static_cast不能去掉类型的const、volitale属性(用const_cast)。// 基本类型转换3 int*pn =&n;4 double*d = static_cast<double*>(&n) //无关类型指针转换,编译错误5 void*p = static_cast<void*>(pn); //任意类型转换成void类型。类型不匹配,reinterpret_cast可以让编译器以你的方法去看待它们:funcPtrArray6 funcP... 阅21 转0 评0 公众公开 17-08-22 10:17 |
virtual void onResize() { static_cast<Window*>(this)->onResize();onResize是虚函数,调用它是先通过对象中指向虚表的指针找到虚表,然后在虚表中找到onResize函数的指针,最后通过函数指针调用函数。this指针强制转换后,内存没有改变,所以指向虚表的指针没有改变,所以它找到的虚表仍是派生类的虚表,自然找到的函数... 阅141 转0 评0 公众公开 17-08-22 10:17 |
这些函数应该用属性pure来声明。format_arg (string-index)format_arg属性指明一个函数使用printf,scanf,strftime或strfmon风格的参数,而且修改它(比如,把它翻译成其它语言),所以结果能够传递给一个printf,scanf,strftime或strfmon风格的函数(格式化函数的其余参数和它们在不修改字符串的函数中一样)。用0值调用这个函数时返回当前... 阅583 转0 评0 公众公开 17-08-17 21:09 |
gcc编译选项。例子用法: gcc -x c hello.pig -x none filename 关掉上一个选项,也就是让gcc根据文档名后缀,自动识别文档类型 例子用法: gcc -x c hello.pig -x none hello2.c -c 只激活预处理,编译,和汇编,也就是他只把程式做成obj文档 例子用法: gcc -c hello.c 他将生成.o的obj文档... 阅111 转0 评0 公众公开 17-08-14 22:18 |
[原创]GCC编译器选项及优化提示由于论坛排版效果不理想,而且我也只在我的个人空间对文章进行后继更新,所以建议直接到我的空间查看:《Glibc Binutils GCC 配置选项简介》《GCC编译优化指南》-------------------------------------------------------------------------------版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,... 阅1 转自cnsystem 公众公开 17-08-14 22:17 |
选项含义。无论是声明为 inline 或者是指定了-finline-functions 选项,如果某函数不能内联,编译器都将发出警告。调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过ldd命令察看时,就是死活找不到你指定链接的so文件,这时... 阅38 转0 评0 公众公开 17-08-14 22:06 |
例如,攻击者利用清单 1 中的函数的堆栈溢出漏洞时,典型的情况是攻击者会试图让程序往 name 数组中写超过数组长度的数据,直到函数栈中的返回地址被覆盖,使该函数返回时跳转至攻击者注入的恶意代码或 shellcode 处执行(关于溢出攻击的原理参见《Linux 下缓冲区溢出攻击的原理及对策》)。Canary 探测方法仅对函数堆中的控制信息 (canary wor... 阅10 转0 评0 公众公开 17-08-14 22:02 |