技能网站建设项目需求,不懂代码可以做网站吗,wordpress手机滑动导航,潍坊网站建设费用1. 几个子程序和说明cc1C 的实际编译程序cc1plusC 的实际编译程序collect2在不使用 GNU连接程序的系统上#xff0c;用来产生特定的全局初始化代码crt0.o为每个系统定制的初始化和结束代码libgcc默认连接的 gcc 例程库libstdc默认连接的 g 例程库 2. 几个重要的和 GCC 协同工作…1. 几个子程序和说明 cc1C 的实际编译程序cc1plusC 的实际编译程序collect2在不使用 GNU连接程序的系统上用来产生特定的全局初始化代码crt0.o为每个系统定制的初始化和结束代码libgcc默认连接的 gcc 例程库libstdc默认连接的 g 例程库 2. 几个重要的和 GCC 协同工作的程序主要来自 binutils 包。 addr2line将文件中的调试信息翻译成为源文件的对应行号ar用于维护目标代码的 archive也就是创建库的程序asGNU 的汇编器cfilt用于完成 C 和 Java 的 mangling/demanglinggcovgprof 的配置工具gprof报告各个函数的执行时间ldGNU 的连接程序nm列出目标文件中定义的符号objcopy完成目标代码的复制和翻译objdump显示目标文件的各种信息包括代码的反汇编结果ranlib创建和添加 ar 创建的库文件的索引readelf获取 elf 文件信息size列出目标文件中每部分的尺寸strings从目标文件中析取可显示的字符串strip从目标文件/库中去掉符号表以及其它调试使用的信息 3. 预处理程序最常见的 C 使用的预处理命令如 #define 和#undef #if #elif #else #endif#ifdef 和 #ifndef#include##连接字符就不多说了。 #error 会引起 cpp 的中断而 #warning 仅仅给出警告而不中断。 #pragma 主要是用于定义编译器相关的一些命令GCC 中可用的有 #pragma GCC dependency file warning information 定义了该文件对 file 的时间戳依赖关系即如 file较当前文件新则发出警告。 #pragma GCC poison function-name 如果使用了 function-name 则发出警告。与 #pragma 等价的有_Pragma() 表达这是为了在 macro 内部也能使用该功能引入的。 4. 预定义的宏 __NASE_FILE__源文件的完整路径名和 __FILE__不同被引用的文件仍然是原来文件名__CHAR_UNSIGNED__用于指定该机器上 char 是无符号类型__cplusplus使用 C 编译器编译__DATE__编译时的日期__FILE__编译文件名__func__同 __FUNCTION____GNUC__GCC 的主版本号__GNUC_MINOR__GCC 的次版本号__GNUC_PATCHLEVEL__GCC 的修订号__GNUG__由 C 编译程序定义__INCLUDE_LEVEL__指 #include 的层次__LINE__当前行号__NO_INLINE__不允许 inline__OPTIMIZE__打开了优化选项__OPTIMIZE_SIZE__打开了对编译出文件尺寸的优化__STDC__表示该程序符合 ansi C 标准__STDC_HOSTED__表示宿主具有标准 C 的环境__STDC_VERSION__标准 C 制定时间__TIME__编译时系统时间__VERSION__GCC 版本号 5. 在 iso646.h 中为操作符定义了 C 对应的操作符名称如 andor等 6.产生依赖关系列表gcc -E -M src 7. GCC 对 C 的扩展主要有__alignof__( typename )返回对齐信息可以 使用参数变长数组在函数里面定义同时还可以把该数组作为参数传递 void f( int length, char buf[length] ) 如果需要倒着写需要前向声明用分号隔开 void f( int length; char buf[length], int length ) 允许结构体最后一个成员为 0 长度数组这样可以创建变长数组。 通过 __attribute__ 可以给函数增加额外的信息便于优化如((noreturn)) 表明没有返回值又如 pure 表明不会修改全局变量noinline 表示不会inline align(n) 表示执行对齐weak,alias 连用表示是别名always_inline表示 总会 inlineconst 不访问全局内存便于优化constructor 是比 main更早调用 的函数destructor 是在 exit() 之后调用的deprecated表示过时了编译时发出 警告format( style, str-pos, var-pos ) 要求编译器检查是否为style如 printf 和 scanf 的函数str-pos 是字符串参数的位置var-pos是可变长度参数列表的开始位置。 类似的还有 format_arg。malloc 告诉编译器其返回指针和 malloc一样对待 no_intrument_function 不会进行 profilingsection(sec-name)将代码放入指定段。 类似的一些可以修饰变量另有 mode指定为 byte、word 或者pointernocommon 不会作为公共变量packed没有间隙vector_size类似数组。 复合语句 {} 可以返回值用 () 包裹之但不适用于 C。y? y : z可简写为 y? : z。 可以对 enum 进行声明但不定义 另有底层的三个函数__builtin_apply_args()__builtin_apply() 和__builtin_return() 可以把当前函数的参数直接传递给后面的函数。 而 __builtin_return_address() 返回 ret 时应跳转的地址frame中第一个记录的 %ebp __builtin_frame_address( int ) 返回第几层的 frame 起始地址。 允许函数嵌套定义并且该函数地址可以传递。支持 $ 命名变量名goto的 label 可以用 取址并赋值给变量进行 goto。__label__ 可以声明局部标识为goto 使用。只要左值表 达式产生左值地址即可。 可变参数宏c99 标准为使用 ... 和 __VA_ARGS__。 在 switch 中支持 case 1 ... 9 这种表达。支持 typedettypenamevar从而将某变量的类 型定义为需要的类型。typeof(var) 产生 var 的类型。 8. C 里面另有 __PRETTY_FUNCTION__而 #progma interface 和#pragma implementation 可以表示类的性质另有 ? 和 ?表示返回较大较小的并可以重载。C99 中 restruct 关键字 可以用 __restrict__。 9. C 中调用 C 程序只需要 external C 声明即可。而 C 中调用 C函数也是用 external c 声明函数并用 g 编译。Tags: gcc