zoukankan      html  css  js  c++  java
  • C语言简单编译预处理-笔记

    预处理指令

    所谓预处理,是指,在编译之前对程序源码进行初步的转换,产生新的源代码提供给编译器.预处理时主要完成:包含其他源文件,定义宏,根据条件决定编译时是否包含某些代码(>防止重复包含某些文件)

    1.#空指令,无效果
    2.#include 包含一个源代码文件
    3.#define 定义宏
    4.#undef 取消已经定义的宏
    5.#if 如果给定的条件为真,则编译下面代码
    6.#ifdef 如果宏已经定义,则编译下面代码
    7.#ifndef 如果宏没有定义,则编译下面代码
    8.#elif 如果前文的#if给定条件不为真,当前条件为真,则编译下面代码
    9.#endif 结束一个#if ... #elif条件编译块
    10.#error 停止编译并显示错误信

    以上内容参考https://www.cnblogs.com/zi-xing/p/4550246.html

    extern关键字

    基本解释为:

    extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.

    两个作用

    1.当它与"C"一起连用时,如:extern "C" void find(int k); 告诉编译器在编译fun这个函数时,按照C语言的规则来翻译,因为C++支持函数重载,函数名翻译规则与C语言不同.
    2.单独使用时, 如: extern void find(int k); 它的作用就是__声明__全局变量或函数作用范围的关键字其声明的函数和变量可以在本模块或其他模块中使用.

    引用https://www.cnblogs.com/WindSun/p/11434436.html

    #ifdef __cplusplus

    #ifdef __cplusplus
    extern "C" {
    #endif
    //代码
    
    #ifdef __cplusplus
    }
    #endif
    
    

    首先, __cplusplus是C++中自定义的宏,定义了这个宏,就代表是这是一段C++代码
    结合上面提到的extern "C"来说,这段代码的含义是:如果这是一段C++的代码,那么加入extern "C"{}之前的代码按照C语言的规则来编译.

    在调试代码中也可以加入

    #ifdef DEBUG
    
    //调试代码。调试用到的find函数
    
    #else
    
    // 发行版find函数
    
    #endif
    

    只用在编译时gcc -DDEBUG -o target target.c 程序即可调用调试代码,去掉-DDEBUG即可生成发行版

  • 相关阅读:
    asp.net如何实现删除文件的操作? (转)
    开始计算机英语的学习,先把这里当生词本用了。
    CSS Box Model 盒子模型
    生成网站快捷方式
    Microsoft .NET Framework 3.5 sp1离线安装解决方案
    asp.net生成网站快捷方式
    https://mail.google.com/tasks/ig?pli=1
    Sql server DATEDIFF DATEADD
    局域网 跨数据库 访问数据库
    asp.net 生成网站快捷方式
  • 原文地址:https://www.cnblogs.com/sophomores/p/12245630.html
Copyright © 2011-2022 走看看