程序结构~编译预处理和宏

/*            #define
    #define<名字><值>
    注意没有结尾的分号,因为不是C的语句
    名字必须是一个单词,值可以是各种东西
    在C语言的编译器开始之前,编译预处理程序
    (cpp)会把程序中的名字换成值
        完全的文本替换


    如果一个宏的值中有其他的宏的名字,也会被替换的
    如果一个宏的值超过一行,最后一行之前的行末需要加\
    红的值后面出现的注释不会被当做宏的值的一部分
*/
/*
        没有值得宏
    #define_DEBUG
    这类宏是用于条件编译的,后面有其他的编译预处理
    指令来检查这类宏是否已经被定义过了

预定义的宏
    _LINE_   源代码件的行号
    _FILE_     源代码的文件名    
    _DATE_   源代码编译时的日期
    _TIME_   源代码编译时的时间
    _STDC_
*/
#include<stdio.h>

int main(int argc,char const *argv[])
{
//    printf("%s:%d\n",_FILE_,_LINE_);
    printf("%s,%s\n",_DATE_,_TIME_);
    return 0;
}      //不知道怎么回事,我的DVC++通不过去
/*
#include<stdio.h>

#define pi 3.14159
#define format "%f\n"
#define pi2 2*pi   //pi *2 编通过译能

int main(int argc,char const *argv[])
{
    printf(format,pi2*3.0);//18.849540
    return 0;
} */

原文地址:https://www.cnblogs.com/lijianmin6/p/10362825.html

时间: 2024-08-11 01:36:07

程序结构~编译预处理和宏的相关文章

【C】 02 - 程序结构和预处理

在正式进入C的语法之前,有必要对其整体外观和组成元素作一个浏览.这部分内容对大多数人是比较陌生的,但它们却是C的起点和骨架.而这些内容涉及的背景或细节又可以展开为专门的课题,这里也只是浅尝则止,说明个大概即可. 1. C程序组成 任何一个程序都首先以源文件(source file)的形式存在,它是一个普通的文本文件.C程序一般由一系列后缀为.c和.h的文件组成,前者包含了程序的执行内容,后者包含了各种声明或定义.其实文件名并不重要,这样的后缀名仅是约定俗成的习惯.但建议保持这样的风格,一是为了看

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

C:编译预处理和宏

define宏定义,在编译的过程中,直接将.c文件中define的内容做文本替换 define PI 3.14159 int main() { printf("%d",PI); } 带参数的宏 (原则:整个值要有括号,并且参数也要用括号) #define cube(x) ((x)*(x)*(x)) int main(){    printf("%d",cube(5));} 原文地址:https://www.cnblogs.com/zhaoy-shine/p/1085

网易云课堂_C语言程序设计进阶_第六周:程序结构:内存模型(全局变量和局部变量)、头文件、宏定义、函数指针和回调函数,ACL图形库的消息机制

6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它们 全局变量初始化 没有做初始化的全局变量会得到0值 指针会得到NULL值 只能用编译时刻已知的值来初始化全局变量 它们的初始化发生在main函数之前 被隐藏的全局变量 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏 6.2 编译预处理 6.3 大程序结构

【黑马程序员】————预处理指令2-文件编译

条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译. 一.基本用法 1 #if 条件1 2 ...code1... 3 #elif 条件2 4 ...code2... 5 #else 6 ...code3... 7 #endif 1> 如果条件1成立,那么编译器就会把#if 与 #elif之间的code1代码编译进去(注意:是编译进去,不是执行,和平时用的if-else是不一样的)2> 如

黑马程序员-C学习笔记-编译预处理指令

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.编译预处理指令 源代码 -> 编译预处理 -> 编译 -> 链接 -> 运行 编译预处理指令:在编译前进行解析处理的指令 特点:所有编译预处理指令都以#开头 所有编译预处理指令都不加分号 二.宏定义 1.不带参数的宏定义:  #define 宏名 值 (1)在预编译的时候所出现宏名标识的地方都会被替换成宏名后面的值 注意点:注释中的宏名不会被替换 在字符串中出现的宏名不会被替换

C预编译, 预处理, C/C++头文件, 编译控制,

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的. 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数. (1)message 参数. Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输

《C程序设计语言(第2版&#183;新版)》第4章 函数与程序结构

函数功能:隐藏操作细节,结构更加清晰,降低修改难度: 4.1 函数基本知识 返回值类型 函数名(参数声明表) { 声明和语句 } 函数在源文件中出现的次序可以任意: 返回值类型省略则默认int:return可不带表达式,执行到最后右花括号也会返回:都是没有返回值的,合法,但未成功返回的“值”肯定是无用的: 程序可看做变量定义与函数定义的集合:函数通过参数.返回值和外部变量通信: 4.2 返回非整型的函数 函数与调用它的主函数在同一源文件中,并且类型不一致时,编译就会发现该错误: 隐式声明:如果未

C语言函数与程序结构

title : C语言函数与程序结构 tags : C语言作用域规则 , 外部变量 ,静态变量 ,寄存器变量,宏定义 grammar_cjkRuby: true --- 外部变量 变量声明用于说明变量的属性(类型),而变量定义还会引起存储器分配 int sp; double s[MAX]; 声明地方:函数外 如果上面的变量定义在所有函数之外,即为外部变量,并为这两个外部变量sp.s[MAX],分配储存单元以及数组的长度,在其源文件中的所有函数都可以使用这两个外部变量. extern int sp