0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用#include操作的一段風(fēng)騷代碼

FPGA之家 ? 來(lái)源:TopSemic嵌入式 ? 作者:TopSemic嵌入式 ? 2021-05-03 11:52 ? 次閱讀

有個(gè)小伙伴在我們的嵌入式交流群里發(fā)了類(lèi)似下面的一張圖,

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

頓時(shí)引起一陣騷動(dòng),我把源代碼再附上,

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 如下:

“北京”,

“上?!保?/p>

“廣州”

這段代碼風(fēng)騷的地方是在C語(yǔ)言里的數(shù)組里使用了一個(gè)#include的操作,我長(zhǎng)這么大也是第一次見(jiàn)。

不過(guò)有個(gè)小伙伴表示不服,他立刻在自己的電腦上編譯了一把,尷尬的是沒(méi)有編譯通過(guò)

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

他也把自己的代碼貼上來(lái)了

問(wèn)題出在什么地方呢?看到這里,你可以暫停10秒鐘,想一下原因。

后來(lái)該同學(xué)自己找到了問(wèn)題,

問(wèn)題在于#include “city.h”必須單獨(dú)起一行。

那么問(wèn)題又來(lái)了,為什么#include 必須要單獨(dú)起一行?為此我把落了一層灰的《C和指針》書(shū)拿出來(lái)翻了一遍,楞是沒(méi)找到說(shuō)明。

最后在谷歌上找到一個(gè)人的回答:

#必須是一行中的首個(gè)非空格字符,也就是說(shuō)#前面可以有空格,但是不能有其他字符。

這個(gè)問(wèn)題先這么告一段落吧。

后來(lái)群里的會(huì)長(zhǎng)同學(xué)又提出了疑問(wèn),

他覺(jué)得這個(gè)city.h寫(xiě)的不符合C規(guī)則,剛一看好像是這么回事,一般的頭文件也沒(méi)有這么寫(xiě)的,不過(guò)事實(shí)上沒(méi)人規(guī)定頭文件應(yīng)該怎么寫(xiě),只要包含后的c文件符合語(yǔ)法規(guī)則就可以。另外#include 包含的文件也不一定是后綴為.h的文件,什么后綴格式的文件都可以。

用上述方法也有好處,方便更新數(shù)組內(nèi)容,直觀。

此外如果用gcc編譯的話,gcc 使用-E 參數(shù)可以幫你展開(kāi)宏定義和頭文件。

最后會(huì)長(zhǎng)同學(xué)感慨了一句:畢業(yè)找工作,精通c語(yǔ)言;兩年后、掌握c語(yǔ)言;五年后,了解c語(yǔ)言。

我找了一下2013年自己找工作的簡(jiǎn)歷。

他說(shuō)的沒(méi)錯(cuò),我第一條寫(xiě)的就是精通C語(yǔ)言編程

全文完。

原文標(biāo)題:一個(gè)風(fēng)騷的C語(yǔ)言操作

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5052

    文章

    18912

    瀏覽量

    300812
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135587

原文標(biāo)題:一個(gè)風(fēng)騷的C語(yǔ)言操作

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    風(fēng)機(jī)運(yùn)行一段時(shí)間跳閘的原因

    風(fēng)機(jī)在運(yùn)行一段時(shí)間后跳閘,可能的原因有多種,以下是些常見(jiàn)的因素及其解決方法: 、電氣因素 起動(dòng)電流過(guò)大 : 對(duì)于大功率容量的風(fēng)機(jī),建議采用降壓起動(dòng)方式以減少起動(dòng)電流。 檢查電氣系統(tǒng),確保電氣元件
    的頭像 發(fā)表于 09-30 10:11 ?438次閱讀

    如何讓蜂鳴器響一段時(shí)間停止

    蜂鳴器是種常見(jiàn)的電子元件,廣泛應(yīng)用于各種電子設(shè)備中,如鬧鐘、電話、電子玩具等。蜂鳴器的工作原理是通過(guò)電磁線圈產(chǎn)生磁場(chǎng),使蜂鳴片振動(dòng)產(chǎn)生聲音。本文將介紹如何讓蜂鳴器響一段時(shí)間停止,包括硬件連接、軟件
    的頭像 發(fā)表于 08-09 10:06 ?476次閱讀

    VL53L0在使用一段時(shí)間后無(wú)法讀取數(shù)據(jù)如何解決?

    VL53L0在使用一段時(shí)間后無(wú)法讀取數(shù)據(jù),已經(jīng)有好幾個(gè)模塊了,返回的錯(cuò)誤代碼有-6,-7和-20,這個(gè)到底是怎么回事?如何解決?
    發(fā)表于 05-28 08:07

    用IAR給STM8編程的每次下載完之后要給它加密,可以在程序里面寫(xiě)一段代碼加密嗎?

    我用IAR給STM8編程的,每次下載完之后要給它加密。有點(diǎn)麻煩,想問(wèn)下哪位大神有沒(méi)有試過(guò)在程序里面寫(xiě)一段代碼加密的?
    發(fā)表于 04-18 06:11

    請(qǐng)問(wèn)STM8中的RAM會(huì)像51系列樣有一段初始化清零代碼嗎?

    最近在做防止復(fù)位腳復(fù)位的程序,想利用RAM的保存數(shù)據(jù)特性做一段復(fù)位恢復(fù),STM8 中的RAM會(huì)像51系列樣有一段初始化清零代碼嗎?
    發(fā)表于 04-16 06:49

    STM8串口工作一段時(shí)間后出現(xiàn)通訊異常的原因?

    做熱復(fù)位, 問(wèn)題猶在,STM8L051F3有每分鐘軟件復(fù)位機(jī)制。系統(tǒng)重新后就正常了,經(jīng)過(guò)一段時(shí)間后可能還會(huì)出現(xiàn)問(wèn)題。有個(gè)客戶反饋產(chǎn)品完全異常之前有出現(xiàn)10次操作有3次成功的狀態(tài)。產(chǎn)品帶回公司測(cè)試幾個(gè)月
    發(fā)表于 04-15 08:05

    算力簡(jiǎn)史,是一段波瀾壯闊的歷史

    今天這篇文章,我將給大家詳細(xì)介紹下人類(lèi)算力的演進(jìn)過(guò)程。這是一段波瀾壯闊的歷史,值得我們駐足與回憶。Chrent人工算力時(shí)代人類(lèi)對(duì)算力的利用,從遠(yuǎn)古時(shí)期就已經(jīng)開(kāi)始了。大腦,是我們最原生的算力工具
    的頭像 發(fā)表于 04-04 08:26 ?542次閱讀
    算力簡(jiǎn)史,是<b class='flag-5'>一段</b>波瀾壯闊的歷史

    STM32F103C8下載程序過(guò)程中中斷,然后上電運(yùn)行MCU,此時(shí)MCU在跑哪一段代碼

    STM32F103C8下載程序過(guò)程中中斷,然后上電運(yùn)行MCU,此時(shí),MCU在跑哪一段代碼?有哪些外設(shè)在工作?多謝
    發(fā)表于 03-29 08:05

    Falsh和RAM中運(yùn)行同一段代碼,執(zhí)行效率相同嗎?

    在Flash中運(yùn)行程序和在RAM中運(yùn)行程序,同一段代買(mǎi)執(zhí)行時(shí)間是不是在RAM中更短,如果RAM中執(zhí)行效率更高,如何將代碼全部拷貝到RAM中運(yùn)行
    發(fā)表于 02-19 07:10

    通過(guò)軟件觸發(fā)lbist的時(shí)候,application的代碼是否還會(huì)運(yùn)行一段時(shí)間直到被lbist結(jié)束后reset?

    通過(guò)軟件觸發(fā) lbist的時(shí)候,application的代碼是否還會(huì)運(yùn)行一段時(shí)間直到 被lbist 結(jié)束后reset?如果applicaiton不運(yùn)行那么cpu的狀態(tài)是否是halt?
    發(fā)表于 01-22 06:01

    在BF707開(kāi)發(fā)過(guò)程中向Flash燒寫(xiě)一段代碼,然后斷電進(jìn)行加載,發(fā)現(xiàn)并未加載成功如何解決?

    在BF707開(kāi)發(fā)過(guò)程中向Flash中燒寫(xiě)過(guò)一段代碼,然后斷電進(jìn)行加載,發(fā)現(xiàn)并未加載成功,當(dāng)進(jìn)行如下操作卻失敗】 1.利用CCES仿真器,在debug情況下對(duì)JTAG進(jìn)行Test結(jié)果為OK的,但當(dāng)
    發(fā)表于 01-12 06:03

    維修力科示波器604ZI開(kāi)機(jī)一段時(shí)間黑屏

    近日某院校送修力科示波器604ZI,客戶反饋開(kāi)機(jī)一段時(shí)間黑屏,對(duì)儀器進(jìn)行初步檢測(cè),確定與客戶描述故障基本致。本期將為大家分享本維修案例。 下面就是力科-604ZI維修情況 力科示波器604ZI開(kāi)機(jī)
    的頭像 發(fā)表于 12-11 16:18 ?427次閱讀

    devc怎么注釋掉一段代碼

    在DevC中,要注釋掉一段代碼,你可以使用注釋符號(hào)來(lái)標(biāo)記這段代碼。注釋符號(hào)的作用是告訴編譯器不要編譯這些代碼,而是將其視為注釋?zhuān)@樣可以方便開(kāi)發(fā)人員在
    的頭像 發(fā)表于 11-22 10:23 ?2128次閱讀

    一段時(shí)間內(nèi)有100個(gè)離散的加速度,如何通過(guò)C語(yǔ)言求出這一段時(shí)間里的位移?

    一段時(shí)間內(nèi) 有100個(gè)離散的加速度如何通過(guò)C語(yǔ)言求出這一段時(shí)間里的位移?
    發(fā)表于 11-07 08:17

    STC使用一段時(shí)間后真的會(huì)掉固件嗎?

    STC使用一段時(shí)間后真的會(huì)掉固件?
    發(fā)表于 10-31 08:29