zoukankan      html  css  js  c++  java
  • [C语言

    编译之前的处理指令

    A.宏定义
    a.
    1 //Like static constant
    2 #define NUM 6
    3 
    4 //The truth of macro define is replacing the constant
    5 //Replace "sum(a, b)" with "a+b"
    6 #define sum(a, b) a+b
    实质是字符替换
     
    b.带参数的宏定义
    #define sum(v1,v2) v1+v2
     
    但是这种“函数”有缺点
        printf("sum = %d ", sum(1, 2) * sum(3, 4));
    out:
    sum = 11
    因为宏定义的实质是文本替换,不会进行计算,实际计算是 1 + 2 * 3 + 4
    解决:给每个变量、算式加上括号
    #define sqr(a) ((a)*(a))
        printf("sqr = %d ", sqr(5+5));
     
     
    B.条件编译
    条件成立的时候才进行编译
    复制代码
     1 #define NUM 1
     2 
     3 int main(int argc, const char * argv[]) {
     4 
     5 #if NUM == 0
     6     printf("0");
     7 #elif NUM > 0
     8     printf(">0");
     9 #elif NUM < 0
    10     printf("<0");
    11 #endif
    12    
    13     printf("
    ");
    14     return 0;
    15 }
    复制代码
     
    C.文件包含
    系统自带使用<> #include <stdio.h>
    自定义”” #include “mylib.h”
     
    使用<>直接到系统目录中寻找资源
    使用””先在源程序目录寻找,若找不到再前往系统目录
     
    防止多次定义,多次引入:
    #ifndef NUM
    #define NUM 3
    #endif
     
    不能循环包含!!
     
    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    数据分析三剑客 numpy,oandas,matplotlib(2)
    数据分析三剑客 numpy,oandas,matplotlib
    爬虫 crawlSpider 分布式 增量式 提高效率
    RestTemplate:带 header 的 get 请求
    Java:md5 摘要
    Java:Base64 编码
    Java:将字符串转换为枚举
    RestTemplate:使用 Map 传递参数
    Spring cloud:网关-Zuul路由
    Spring cloud:熔断器-Hystrix Dashboard
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4500755.html
Copyright © 2011-2022 走看看