• C语言预处理理论2


    C语言预处理理论
    1、头文件包含
    (1)#include <>和#include ""区别:
    <>专门用来包含系统提供的头文件(就是系统自带的,不是程序员自己写的),""用来包含自己写的头文件;更深层次来说:
    <>的话C语言编译器只会到系统指定目录(编译器中配置的或者操作系统配置的寻找目录,譬如在ubuntu中是/usr/include目录,
    编译器还允许用-I来附加指定其他的包含路径)去寻找这个头文件(隐含意思就是不会找当前目录下),如果找不到就会提示这个
    头文件不存在。
    (2)""包含的头文件,编译器默认会先在当前目录下寻找相应的头文件,如果没找到然后再到系统指定目录去寻找,如果还找不
    到则提示文件不存在。
    总结+注意:规则虽然允许用""来包含系统指定目录,但是一般的使用原则是:如果是系统指定的自带的用<>,如果是自己写
    的在当前目录下放着用"",如果是自己写的但是集中放在了一起专门存放头文件的目录下,将来在编译器中用-I参数来寻找,
    这种情况下用<>。
    (3)头文件包含的真实含义是:在#include<xx.h>的那一行,将xx.h这个头文件的内容原地展开替换这一行#include语句。
    这个过程在预处理中进行。
    2、注释
    (1)注释是给人看的,不是给编译器看的。
    (2)编译器既然不看注释,那么编译时最好没有注释的。实际上在预处理阶段,预处理器会拿掉程序中所有的注释语句,到了
    编译器阶段程序中其实已经没有注释了。
    3、条件编译
    (1)有时候我们希望程序有多种配置,我们在源代码编写时写好了各种配置的代码,然后给个配置开关,在源代码级别去修改
    配置开关来让程序编译出不同的效果。
    (2)条件编译中用的两种条件判定方法分别是#ifdef和#if
    区别:#ifdef XXX判定条件成立与否主要是看XXX这个符号在本语句之前有没有被定义,只要定义了(我们可以直接#define XXX
    或者#define XXX 12或者#define XXX YYY)这个符号就是成立的。
    #if (条件表达式),它的判定标准是()中的表达式是否为true还是false,跟C中的if语句有点像。

     1 #include <stdio.h>
     2 
     3 #define NUM
     4 
     5 int main(void)
     6 {
     7     int a = 0;
     8     #ifdef NUM            //如果前边有定义NUM这个符号,成立
     9     a = 111;
    10     printf("#ifdef NUM.
    ");
    11     #else                 //如果前边没有定义NUM这个符号,执行下边的语句
    12     a = 222;
    13     printf("#else.
    ");
    14     #endif
    15     
    16     return 0;
    17 }
     1 #include <stdio.h>
     2 
     3 #define NUM 1
     4 
     5 int main(void)
     6 {
     7     int a = 0;
     8     #if(NUM == 1)
     9     a = 111;
    10     printf("#ifdef NUM.
    ");
    11     #else
    12     a = 222;
    13     printf("#else.
    ");
    14     #endif
    15     
    16     return 0;
    17 }
  • 相关阅读:
    Event 事件(最简单实用)
    Codeforces Beta Round #93_A题
    欧几里得算法扩展(extended gcd)解不定方程_初入门
    HDU2955_Robberies_01背包变种
    HDU2602_Bone Collector_很水的01背包
    USACO_2_1_3_Sorting a ThreeValued Sequence_交换环
    Codeforces Beta Round #93_B题
    中国剩余定理的_非互素同余模板
    HDU1114_DP_完全背包
    HDU3809_Decrypt coordinate_迭代法
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11732647.html
Copyright © 2020-2023  润新知