文章分类 - c
摘要:DON'T USE #if, because it will cause error " xx is not defined" if you use option "-Werror=undef", you can use #ifdef XX && XX.using #ifdef XX && XX instead of #if XX to avoid build error with option -Werror=undefBAD:#if HAVE_SIGNAL_H#include #else#include #en
阅读全文
摘要:这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分 内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。 其中#else部分也可以没有,即: #ifdef 程序段1 #denif 这里的“程序段”可以是语句组,...
阅读全文
摘要:枚举 在实际问题中, 有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月, 一个班每周有六门课程等等。如果把这些量说明为整型, 字符型或其它类型显然是不妥当的。 为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值, 被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是, 枚举类型是一种基本数据类型,而不是一种构造类型, 因为它不能再分解为任何基本类型。枚举类型的定义和枚举变量的说明一、枚举的定义枚举类型定义的一般形式为:enum 枚举名{ 枚举值表 };在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如: .
阅读全文
摘要:《程序员的自我修养:链接、装载与库》第11章运行库。本章主要介绍运行库的概念、C/C++运行库、Glibc和MSVC CRT、运行库如何实现C++全局构造和析构及以fread()库函数为例对运行库进行剖析。本节为大家介绍程序从main开始吗。第11章 运行库11.1 入口函数和程序初始化11.2 C/C++运行库11.3 运行库与多线程11.4 C++全局构造与析构11.5 fread实现11.6 本章小结如果把一个程序比作一个世界,那么程序的启动无疑就是"创世"。在本章里,我们将从程序的创世开始,接触到在程序背后另一类默默服务的团体。它们能够使得程序正常地启动,能够使得各
阅读全文
摘要:运行qemu,遇到qemu: could not set up host forwarding rule 'tcp:9001::9001',原因: 另外一个qemu正在运行!
阅读全文
摘要:编译时遇到错误:cannot find input file: Makefile.in这个是因为没有正确的Makefile.am所致,原因通常为:1. 文件名字不对,如大小写错误, makefile.am2. 文件内容(格式)不对, 如 xx_SOURCES = \ $(BUILT_SOURCES) \ pk_test.c //这里后面有空格之类3. ...这两天编译apache总是出现Makefile的错误,开始还以为是编译参数的错误,后来分析后才知道原来是下载文件有问题造成的,重新下载了一个httpd包后,编译正常了。顺便也查了一下关于make的问题,一起放到这里做个记录吧Autoconf
阅读全文
摘要:写了一个很小的程序: ---------------------- #include <stdio.h> main () { printf ( "HELLO WORLD!\n "); } ---------------------- 用 %gcc -o test test.c 编译 没有问题,程序执行的结果也正确。 但使用 -d 选项编译时,gcc 报错 % gcc -d -o test tset.c /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/http://www....
阅读全文