0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用#include操作的一段风骚代码

FPGA之家 来源:TopSemic嵌入式 作者:TopSemic嵌入式 2021-05-03 11:52 次阅读

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

5e48f54c-9ff3-11eb-8b86-12bb97331649.png

顿时引起一阵骚动,我把源代码再附上,

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的操作,我长这么大也是第一次见。

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

5e93bc26-9ff3-11eb-8b86-12bb97331649.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

全文完。

原文标题:一个风骚的C语言操作

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19115

    浏览量

    304925
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136739

原文标题:一个风骚的C语言操作

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADS1013采集运放输出数据,一段时间后变的很低是为什么?

    我用ADS1013采集AD8237运放输出直流数据,开始采集得到的原始数据为683,对应1.3v。一段时间后大概5-9分钟,ads1013读出来的数据变成11,对应0.02v,然后不再发生变化。需要系统复位ADS1013采集的数据才会变成683,但过了一段时间还是会出现
    发表于 12-17 07:09

    ADS1220运行一段时间后出现ADC = -1 的错值,怎么解决?

    ADS1220可以转换出数据,但是经常运行一段时间后出现ADC = -1 的错值,并且复位单片机无法恢复,只有把ADS1220断电后才能恢复。 代码是移植的github上适配Arduino的代码
    发表于 12-06 07:23

    TLV5633IPW使用一段时间就坏了,为什么?

    最近使用TLV5633IPW芯片,使用一段时间就坏了,跟C8051F530A单片机搭配使用,DA输出过大,请大佬出来指点一二,谢谢
    发表于 11-26 08:18

    风机运行一段时间跳闸的原因

    风机在运行一段时间后跳闸,可能的原因有多种,以下是些常见的因素及其解决方法: 、电气因素 起动电流过大 : 对于大功率容量的风机,建议采用降压起动方式以减少起动电流。 检查电气系统,确保电气元件
    的头像 发表于 09-30 10:11 1634次阅读

    如何让蜂鸣器响一段时间停止

    蜂鸣器是种常见的电子元件,广泛应用于各种电子设备中,如闹钟、电话、电子玩具等。蜂鸣器的工作原理是通过电磁线圈产生磁场,使蜂鸣片振动产生声音。本文将介绍如何让蜂鸣器响一段时间停止,包括硬件连接、软件
    的头像 发表于 08-09 10:06 942次阅读

    相间距离保护的一段保护范围介绍

    引言 电力系统是现代社会的重要基础设施,其安全稳定运行对于保障国民经济和人民生活具有重要意义。在电力系统中,相间距离保护是种重要的保护方式,其主要作用是保护电力系统的相间故障。一段保护范围作为相间
    的头像 发表于 08-05 10:11 810次阅读

    VL53L0在使用一段时间后无法读取数据如何解决?

    VL53L0在使用一段时间后无法读取数据,已经有好几个模块了,返回的错误代码有-6,-7和-20,这个到底是怎么回事?如何解决?
    发表于 05-28 08:07

    用IAR给STM8编程的每次下载完之后要给它加密,可以在程序里面写一段代码加密吗?

    我用IAR给STM8编程的,每次下载完之后要给它加密。有点麻烦,想问下哪位大神有没有试过在程序里面写一段代码加密的?
    发表于 04-18 06:11

    请问STM8中的RAM会像51系列样有一段初始化清零代码吗?

    最近在做防止复位脚复位的程序,想利用RAM的保存数据特性做一段复位恢复,STM8 中的RAM会像51系列样有一段初始化清零代码吗?
    发表于 04-16 06:49

    STM8串口工作一段时间后出现通讯异常的原因?

    做热复位, 问题犹在,STM8L051F3有每分钟软件复位机制。系统重新后就正常了,经过一段时间后可能还会出现问题。有个客户反馈产品完全异常之前有出现10次操作有3次成功的状态。产品带回公司测试几个月
    发表于 04-15 08:05

    算力简史,是一段波澜壮阔的历史

    今天这篇文章,我将给大家详细介绍下人类算力的演进过程。这是一段波澜壮阔的历史,值得我们驻足与回忆。Chrent人工算力时代人类对算力的利用,从远古时期就已经开始了。大脑,是我们最原生的算力工具
    的头像 发表于 04-04 08:26 662次阅读
    算力简史,是<b class='flag-5'>一段</b>波澜壮阔的历史

    STM32F103C8下载程序过程中中断,然后上电运行MCU,此时MCU在跑哪一段代码

    STM32F103C8下载程序过程中中断,然后上电运行MCU,此时,MCU在跑哪一段代码?有哪些外设在工作?多谢
    发表于 03-29 08:05

    Falsh和RAM中运行同一段代码,执行效率相同吗?

    在Flash中运行程序和在RAM中运行程序,同一段代买执行时间是不是在RAM中更短,如果RAM中执行效率更高,如何将代码全部拷贝到RAM中运行
    发表于 02-19 07:10

    通过软件触发lbist的时候,application的代码是否还会运行一段时间直到被lbist结束后reset?

    通过软件触发 lbist的时候,application的代码是否还会运行一段时间直到 被lbist 结束后reset?如果applicaiton不运行那么cpu的状态是否是halt?
    发表于 01-22 06:01

    在BF707开发过程中向Flash烧写一段代码,然后断电进行加载,发现并未加载成功如何解决?

    在BF707开发过程中向Flash中烧写过一段代码,然后断电进行加载,发现并未加载成功,当进行如下操作却失败】 1.利用CCES仿真器,在debug情况下对JTAG进行Test结果为OK的,但当
    发表于 01-12 06:03