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

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

    关注

    5017

    文章

    18496

    浏览量

    293166
  • C语言
    +关注

    关注

    180

    文章

    7551

    浏览量

    131879

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

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

收藏 人收藏

    评论

    相关推荐

    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

    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

    devc怎么注释掉一段代码

    在DevC中,要注释掉一段代码,你可以使用注释符号来标记这段代码。注释符号的作用是告诉编译器不要编译这些代码,而是将其视为注释,这样可以方便开发人员在
    的头像 发表于 11-22 10:23 1497次阅读

    一段时间内有100个离散的加速度,如何通过C语言求出这一段时间里的位移?

    一段时间内 有100个离散的加速度如何通过C语言求出这一段时间里的位移?
    发表于 11-07 08:17

    STC使用一段时间后真的会掉固件吗?

    STC使用一段时间后真的会掉固件?
    发表于 10-31 08:29

    cubemx配置的freertos+fatfs程序,fatfs运行一段时间后不能打开文件是怎么回事?

    我使用cubemx(主芯片为stm32f407zet6)配置的freertos+fatfs程序,程序起初挂载文件、打开文件、读取文件都正常。上电放置一段时间,不进行任何文件的操作,也不对设备进行操作,半个小时后文件系统只能挂载不
    发表于 10-31 06:13

    单片机如何做到一段时间没有操作机器自动进入待机状态,按任意键退出待机?

    单片机如何做到一段时间没有操作机器自动进入待机状态,按任意键退出待机
    发表于 10-07 08:49

    如何使用C代码中的比特操作

    设置/ 清除, 从而增加操作速度 。 本样本展示了如何使用 C 中的比特操作, 使用简单的预处理器宏来进行存取 。 您可以在下列时间下载样本代码http://www.nuvot
    发表于 08-31 09:58

    一段C代码关联的知识点

    之前有位网友在交流群里发了一段代码的截图,我觉得很有意思,在此分享一下。
    发表于 08-30 10:42 289次阅读
    <b class='flag-5'>一段</b>C<b class='flag-5'>代码</b>关联的知识点