有个小伙伴在我们的嵌入式交流群里发了类似下面的一张图,

顿时引起一阵骚动,

我把源代码再附上,

main.c 如下:

#include <stdio.h>
#include <string.h>static char city_name[][20] = { #include "city.h" };int main(void) {printf("%s", city_name[0]);
}

city.h 如下:

"北京",
"上海",
"广州"

这段代码风骚的地方是在C语言里的数组里使用了一个#include的操作,我长这么大也是第一次见。

不过有个小伙伴表示不服,他立刻在自己的电脑上编译了一把,尴尬的是没有编译通过

他也把自己的代码贴上来了

问题出在什么地方呢?看到这里,你可以暂停10秒钟,想一下原因。

后来该同学自己找到了问题,

问题在于#include “city.h”必须单独起一行。

那么问题又来了,为什么#include 必须要单独起一行?为此我把落了一层灰的《C和指针》书拿出来翻了一遍,楞是没找到说明。

最后在谷歌上找到一个人的回答:

#必须是一行中的首个非空格字符,也就是说#前面可以有空格,但是不能有其他字符。

这个问题先这么告一段落吧。

后来群里的会长同学又提出了疑问,

他觉得这个city.h写的不符合C规则,刚一看好像是这么回事,一般的头文件也没有这么写的,不过事实上没人规定头文件应该怎么写,只要包含后的c文件符合语法规则就可以。另外#include 包含的文件也不一定是后缀为.h的文件,什么后缀格式的文件都可以。

用上述方法也有好处,方便更新数组内容,直观。

此外如果用gcc编译的话,gcc 使用-E 参数可以帮你展开宏定义和头文件。

最后会长同学感慨了一句:毕业找工作,精通c语言;两年后、掌握c语言;五年后,了解c语言。

我找了一下2013年自己找工作的简历:

他说的没错,我第一条写的就是精通C语言编程...。

全文完。

欢迎关注我们,与大家一起成长!


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

一个风骚的C语言操作相关推荐

  1. C语言操作MySQL-----又一个小技巧

    C语言操作MySQL 连接MySQL 常用数据库操作函数 查询操作 1.`mysql_query()`函数 插入操作 修改操作 删除操作 在开始之前需要进行环境的配置,请参考这篇博客: VS2019配 ...

  2. matlab m语言,我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言...

    导航:网站首页 > 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 匿名网 ...

  3. c语言操作空间怎么打开_学好C语言,离大神更近一步,C环境的安装

    我们先来说说为什么要学习C语言: 首先,就现在的几大系统而言,我们看看使用它的都有多少.Windows系统刚出现的时候就是用的C语言,后来才使用了C++和C#等.Linux的底层也是使用C语言编写的, ...

  4. go语言操作xlsx文件

    简言 1. go语言操作xlsx文件已经有了很完善的第三方库,本篇博客演示的是 360EntSecGroup-Skylar/excelize 的使用 2. 演示功能:读取xlsx文件,新建,写入,保存 ...

  5. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

  6. golang mysql curd_Go 语言操作 MySQL 之 CURD 操作

    本文转载于SegmentFault社区 作者:Meng小羽 MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql- ...

  7. 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接

    从一线收集了两百个文件,要整合到一起?总部一张全国两百个城市的汇总表,拆成两百个小文件?开什么玩笑,难道要复制粘贴到天荒地老... 不用这么麻烦,一个循环,一个语句,实现快速表拆分和表拼接,从此告别复 ...

  8. mysql中dml操作_MySQL的DML语言操作实例

    补充说明,外键:不要使用外键,一切外键概念都在应用层解决. 补充说明,数据库的列,也就是字段名,尽量带上飘符号` 数据库存在的意义:数据存储和数据管理. 数据库:行(数据),列(字段) 注意:本页是解 ...

  9. Linux C语言操作SQLite数据库

    1. SQLite数据库特点 (1)SQLite数据库是开源的嵌入式数据库,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它. (2)事务的处理是原子的,一致的 ...

最新文章

  1. 详解CPU漏洞对机器学习的影响:几乎所有卷积层都受影响,QR分解降速37%
  2. chrome 请求带上cookie_【编号0002】请求头的内容,及其相关知识铺垫
  3. linux搜索文件为1kb,Linux常用命令
  4. java调度:(二)在项目中调度策略的选择
  5. 机器学习(十五)——loss function比较、独立成分分析
  6. php注册界面模板,WeUI注册页面
  7. win10运行Git出现警告 :warning: LF will be replaced by CRLF in ...
  8. 内存交换空间(swap)
  9. Centos7虚拟机的镜像下载及创建
  10. android自动适应横屏,Android屏幕适配(一)--自定义View屏幕适配
  11. 网络资源下载操作及其原理学习: 如迅雷与百度网盘
  12. 计算机局域网络硬件组成,计算机基础知识:局域网网络硬件的组成
  13. 数学游戏“数三角形”的可编程图论模型
  14. 【懒懒的Tensorflow学习笔记一之快速入门】
  15. 小屏幕android手机,小尺寸、小屏幕的安卓手机有哪些
  16. 怎样给电脑文件夹批量快速重新命名?
  17. Carson带你学数据结构:手把手带你了解 ”图“ 所有知识!(含DFS、BFS)
  18. 汕头好的计算机学校有哪些,2021年汕头所有小学名单及排名,汕头最好的小学有哪些...
  19. 现在你可以通过深度学习用别人的声音来说话了
  20. Java知识点整理(SE) IO

热门文章

  1. Petuum - Careers
  2. 6大主流开源SQL引擎总结,遥遥领先的是谁?
  3. .读取excel表格(JAVA)
  4. 书籍推荐-记这几年看的书
  5. akshare写etf动量滚动策略
  6. 调整标志位方法oracle,面试题(二)(示例代码)
  7. leelen可视对讲怎么接线_楼宇对讲系统怎么布线 楼宇对讲系统布线方式【介绍】...
  8. PyQt5案例汇总(简洁版)
  9. global全局变量
  10. Hive2.1.1的安装教程(元数据放在本地Mysql)