在程序中了解自己的运行环境--笔记
2014-11-10 22:27
267 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.在程序中了解自己的运行环境</span>
gcc扩展:
预定义宏:__FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__,(C++程序中会有CPLUSPLUS)
#pragma pack(1) 按1个字节对齐补齐(结构类型)
#pragma pack(4) 按4个字节对齐补齐(结构类型)
属性修饰__attribute__((属性))
函数constructor/destructor
before main
main function
after main
结构的属性packed/ aligned(1) /aligned(4) 按几字节对齐补齐
#include <stdio.h>
typedef struct A{
char a;
double b;
char c;
}A;
typedef struct B{
char a;
double b;
char c;
}__attribute__((aligned(8))) B; // <span style="font-family: Arial, Helvetica, sans-serif;">__attribute__((packed))</span>
int main()
{
printf("sizeof double=%d\n", sizeof(double));
printf("sizof A=%d\n", sizeof(A));
printf("sizof B=%d\n", sizeof(B));
}
typeof (x) 在编译时取得x的类型名
#define swap(x, y) { typeof(x) t=x; x=y; y=t; } //变量交换
工具命令
nm显示目标文件中的符合(名字)清单
objdump显示目标文件文件中的附件信息
ldd查看依赖的动态库
gcc扩展:
预定义宏:__FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__,(C++程序中会有CPLUSPLUS)
#pragma pack(1) 按1个字节对齐补齐(结构类型)
#pragma pack(4) 按4个字节对齐补齐(结构类型)
属性修饰__attribute__((属性))
函数constructor/destructor
<span style="font-size:18px;">#include<stdio.h> void f1()__attribute__((constructor)); void f2()__attribute__((destructor)); int main() { puts("main function"); } void f1() { puts("before main"); } void f2() { puts("after main"); }</span>$ gcc -o main attribute.c && ./main
before main
main function
after main
结构的属性packed/ aligned(1) /aligned(4) 按几字节对齐补齐
#include <stdio.h>
typedef struct A{
char a;
double b;
char c;
}A;
typedef struct B{
char a;
double b;
char c;
}__attribute__((aligned(8))) B; // <span style="font-family: Arial, Helvetica, sans-serif;">__attribute__((packed))</span>
int main()
{
printf("sizeof double=%d\n", sizeof(double));
printf("sizof A=%d\n", sizeof(A));
printf("sizof B=%d\n", sizeof(B));
}
typeof (x) 在编译时取得x的类型名
#define swap(x, y) { typeof(x) t=x; x=y; y=t; } //变量交换
工具命令
nm显示目标文件中的符合(名字)清单
objdump显示目标文件文件中的附件信息
ldd查看依赖的动态库
相关文章推荐
- Java自学笔记(第一天)安装Java8---配置运行环境---编写"hello world"程序---注释
- Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。 1、Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Co
- 其实并不了解:从0到第一个C程序的成功运行的笔记
- Chuck语言学习笔记——1.环境搭建与程序运行
- Java基础学习记录笔记(运行环境+程序编写)
- c++学习笔记(1)——环境搭建、经典教程推荐及 Visual Studio 2005/2008中如何编译和运行C++程序
- 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
- 实验1_了解C程序的运行环境和运行一个C程序的方法
- Scala学习笔记(一) --- 搭建Scala环境,并运行第一个程序
- windows 2008 R2系统下搭建php项目运行环境步骤,仅为自己学习笔记
- 自己写的java程序如何放在YARN环境下运行
- angularjs学习笔记一——了解angularjs、开发环境搭建、第一个angularjs程序
- UNIX环境编程学习笔记---------编程实例----自己写的CS程序
- 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
- 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)
- 如何准确的统计自己程序的运行时间
- 随安装程序自动安装.NET运行环境
- 自己的程序只运行一次
- [愚翁专栏]如何使自己的程序只运行一次
- asp.net+access程序运行环境的配置(转载)