一个风骚的C语言操作
有个小伙伴在我们的嵌入式交流群里发了类似下面的一张图,
顿时引起一阵骚动,
我把源代码再附上,
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语言操作相关推荐
- C语言操作MySQL-----又一个小技巧
C语言操作MySQL 连接MySQL 常用数据库操作函数 查询操作 1.`mysql_query()`函数 插入操作 修改操作 删除操作 在开始之前需要进行环境的配置,请参考这篇博客: VS2019配 ...
- matlab m语言,我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言...
导航:网站首页 > 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 匿名网 ...
- c语言操作空间怎么打开_学好C语言,离大神更近一步,C环境的安装
我们先来说说为什么要学习C语言: 首先,就现在的几大系统而言,我们看看使用它的都有多少.Windows系统刚出现的时候就是用的C语言,后来才使用了C++和C#等.Linux的底层也是使用C语言编写的, ...
- go语言操作xlsx文件
简言 1. go语言操作xlsx文件已经有了很完善的第三方库,本篇博客演示的是 360EntSecGroup-Skylar/excelize 的使用 2. 演示功能:读取xlsx文件,新建,写入,保存 ...
- java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)
java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...
- golang mysql curd_Go 语言操作 MySQL 之 CURD 操作
本文转载于SegmentFault社区 作者:Meng小羽 MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql- ...
- 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接
从一线收集了两百个文件,要整合到一起?总部一张全国两百个城市的汇总表,拆成两百个小文件?开什么玩笑,难道要复制粘贴到天荒地老... 不用这么麻烦,一个循环,一个语句,实现快速表拆分和表拼接,从此告别复 ...
- mysql中dml操作_MySQL的DML语言操作实例
补充说明,外键:不要使用外键,一切外键概念都在应用层解决. 补充说明,数据库的列,也就是字段名,尽量带上飘符号` 数据库存在的意义:数据存储和数据管理. 数据库:行(数据),列(字段) 注意:本页是解 ...
- Linux C语言操作SQLite数据库
1. SQLite数据库特点 (1)SQLite数据库是开源的嵌入式数据库,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它. (2)事务的处理是原子的,一致的 ...
最新文章
- 详解CPU漏洞对机器学习的影响:几乎所有卷积层都受影响,QR分解降速37%
- chrome 请求带上cookie_【编号0002】请求头的内容,及其相关知识铺垫
- linux搜索文件为1kb,Linux常用命令
- java调度:(二)在项目中调度策略的选择
- 机器学习(十五)——loss function比较、独立成分分析
- php注册界面模板,WeUI注册页面
- win10运行Git出现警告 :warning: LF will be replaced by CRLF in ...
- 内存交换空间(swap)
- Centos7虚拟机的镜像下载及创建
- android自动适应横屏,Android屏幕适配(一)--自定义View屏幕适配
- 网络资源下载操作及其原理学习: 如迅雷与百度网盘
- 计算机局域网络硬件组成,计算机基础知识:局域网网络硬件的组成
- 数学游戏“数三角形”的可编程图论模型
- 【懒懒的Tensorflow学习笔记一之快速入门】
- 小屏幕android手机,小尺寸、小屏幕的安卓手机有哪些
- 怎样给电脑文件夹批量快速重新命名?
- Carson带你学数据结构:手把手带你了解 ”图“ 所有知识!(含DFS、BFS)
- 汕头好的计算机学校有哪些,2021年汕头所有小学名单及排名,汕头最好的小学有哪些...
- 现在你可以通过深度学习用别人的声音来说话了
- Java知识点整理(SE) IO