在C语言编程中,有五个符号,它们的值在编译时,才由编译器替换成常量值,对程序员非常有用。

1、__STDC__

如果编译器支持标准C语言,则将__STDC__变为1,否则变为0。

例如下面的代码:

#include int main(){    if (__STDC__)    {        printf("Compiler supports standard C.");    }    else    {        printf("Compile does not support standard C.");    }    return 0;}

使用gcc编译后运行的情况为:

Compiler supports standard C.

2、__DATE__和__TIME__

编译器在编译程序时,碰到__DATE__,会替换成当前的日期,碰到__TIME__,会替换成当前的时间。

例如下面的代码:

#include int main(){    printf("Date: %s, time: %s", __DATE__, __TIME__);    return 0;}

编译之后的运行结果是:

Date: May  2 2020, time: 01:05:58

__DATE__和__TIME__常常用来标识软件的生成时间。

3、__FILE__和__LINE__

编译器在编译程序时,碰到__FILE__,会替换成源文件名,碰到__LINE__,会替换成所编译代码在当前源文件中的行号。

例如下面的代码:

#include int main(){    printf("%s (%d), hello.", __FILE__, __LINE__);    return 0;}

程序编译之后运行的结果为:

test.c (6), hello.

c语言file_C语言编程第20讲——几个有用的编译时才确定值的符号相关推荐

  1. c语言file_C语言 技能提升 系列文章(七)格式化输入/输出

    当初大家入门学习C语言的时候,面对一个黑黑的命令行界面,仅有的交互方法只有printf/scanf这两个函数作为输入输出.但是,大家知道吗?这两个函数后面还有很多兄弟姐妹.那就是C语言的格式化输入输出 ...

  2. c语言file_C语言程序的编译和调试

    1.gcc编译器-熟练使用 gcc(GNU Compiler)是GNU推出的多平台编译器,可以将C.C++源程序编译连接成可执行文件,支持后缀如下: 后缀备注.cc语言源代码文件.h程序所包含的头文件 ...

  3. 【编程基础の基础】“#define _GNU_SOURCE“或是在编译时“-D _GNU_SOURCE“代表了什么?有什么用

    概念 详细的信息可查看Linux手册 man feature_test_macros 从GNU的文档中: Macro: _GNU_SOURCE If you define this macro, ev ...

  4. C语言多文件编程基本格式

    1.背景: 用一个丢骰子的简单案例熟悉了C语言多文件编程该咋写 2.格式 (1)主函数文件main.c //文件头part1:所有要使用的函数#include ;#include ;#include ...

  5. 用C语言进行Windows编程入门

    用C语言进行Windows编程入门 本文对一般教程或网上有的(如C语言语法等基础)不深入介绍,对初学者易造成疑惑误解或难以找到的内容进行较详尽的介绍. 学习C语言很久了,一直面对控制台应用程序(Win ...

  6. 浅谈C语言嵌入式系统编程注意事项

    C语言嵌入式系统编程注意事项之背景篇   本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上 ...

  7. 视频教程-C语言及程序设计提高视频精讲-C/C++

    C语言及程序设计提高视频精讲 烟台大学计算机学院教师,二十年余教师生涯,看出了在错综复杂的教育环境中,坚持教育教学的价值与前景.和学生并肩,与不良学风作斗争,为IT菜鸟建跑道,让大一的孩子会编程,为迷 ...

  8. C语言嵌入式系统编程修炼(经典中的经典)

    C语言嵌入式系统编程修炼      http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了. C语言嵌入式系统编程修炼   ...

  9. C语言嵌入式系统编程注意事项

    不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑, 汇编语言 具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是 嵌入式系 ...

最新文章

  1. C/C++在不确定输入字符串长度情况下,对其进行存储和字符操作问题
  2. redis bitmap
  3. Eclipse上GIT插件EGIT使用手册
  4. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
  5. 移动硬盘磁盘结构损坏且无法读取要怎样办啊
  6. 阿里云:面向5G时代的物联网无线连接服务
  7. 东哥读书小记 之 《一个广告人的自白》
  8. centos7.4 mysql启动,centos7下mysql服务启动失败_网站服务器运行维护,centos7,mysql
  9. linux 挂载和网络命令
  10. mysql 自动生成mapper_Spring Boot整合mybatis并自动生成mapper和实体实例解析
  11. Pspice轨迹命令
  12. 使用电脑小技巧70个
  13. 函数判断闰年:输入年份 判断此2月份的天数
  14. 秒搜编程好书 就用这个Python写的爬虫网站
  15. ng-bind、ng-value和ng-model
  16. Java 中多态的概念以及前提条件
  17. html留言板原理,js实现留言板
  18. 数据库关系运算:自然连接,投影,交,除,并
  19. Linux -- SELinux配置及应用(1)
  20. NCCL源码解析②:Bootstrap网络连接的建立

热门文章

  1. 每日一皮:如何用一句话让领导和同事都尴尬至极?
  2. Spring Boot 2.x基础教程:Swagger静态API文档的生成
  3. 面试投行的20个Java问题
  4. SpringBoot中使用ShardingJdbc切分数据库表
  5. css样式脱离标准文档流
  6. VS2010-2015对C++11/14/17特性的支持
  7. vs2015编译 pybind 动态库
  8. 网页播放rtsp视频流
  9. opencv findContours 崩溃CrtDbgBreak
  10. JScrollPane 滚动处理