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ā)了類似下面的一張圖,

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)注

    5091

    文章

    19176

    瀏覽量

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

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137513

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用STM32單片機(jī)可以進(jìn)行SPI通訊,一段時(shí)間可以正常工作,一段時(shí)間沒(méi)有數(shù)值,這是什么問(wèn)題?

    我使用STM32單片機(jī),可以進(jìn)行SPI通訊。。一段時(shí)間可以正常工作,一段時(shí)間沒(méi)有數(shù)值,寄存器0x20顯示0xf0.。。。請(qǐng)問(wèn)您這是什么問(wèn)題?
    發(fā)表于 01-09 07:52

    ADS1013采集運(yùn)放輸出數(shù)據(jù),一段時(shí)間后變的很低是為什么?

    我用ADS1013采集AD8237運(yùn)放輸出直流數(shù)據(jù),開(kāi)始采集得到的原始數(shù)據(jù)為683,對(duì)應(yīng)1.3v。一段時(shí)間后大概5-9分鐘,ads1013讀出來(lái)的數(shù)據(jù)變成11,對(duì)應(yīng)0.02v,然后不再發(fā)生變化。需要系統(tǒng)復(fù)位ADS1013采集的數(shù)據(jù)才會(huì)變成683,但過(guò)了一段時(shí)間還是會(huì)出現(xiàn)
    發(fā)表于 12-17 07:09

    ADS1220運(yùn)行一段時(shí)間后出現(xiàn)ADC = -1 的錯(cuò)值,怎么解決?

    ADS1220可以轉(zhuǎn)換出數(shù)據(jù),但是經(jīng)常運(yùn)行一段時(shí)間后出現(xiàn)ADC = -1 的錯(cuò)值,并且復(fù)位單片機(jī)無(wú)法恢復(fù),只有把ADS1220斷電后才能恢復(fù)。 代碼是移植的github上適配Arduino的代碼。
    發(fā)表于 12-06 07:23

    TLV5633IPW使用一段時(shí)間就壞了,為什么?

    最近使用TLV5633IPW芯片,使用一段時(shí)間就壞了,跟C8051F530A單片機(jī)搭配使用,DA輸出過(guò)大,請(qǐng)大佬出來(lái)指點(diǎn)一二,謝謝
    發(fā)表于 11-26 08:18

    風(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 ?2131次閱讀

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

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

    相間距離保護(hù)的一段保護(hù)范圍介紹

    引言 電力系統(tǒng)是現(xiàn)代社會(huì)的重要基礎(chǔ)設(shè)施,其安全穩(wěn)定運(yùn)行對(duì)于保障國(guó)民經(jīng)濟(jì)和人民生活具有重要意義。在電力系統(tǒng)中,相間距離保護(hù)是種重要的保護(hù)方式,其主要作用是保護(hù)電力系統(tǒng)的相間故障。一段保護(hù)范圍作為相間
    的頭像 發(fā)表于 08-05 10:11 ?1025次閱讀

    請(qǐng)問(wèn)ad9910芯片的ram模式在接收數(shù)據(jù)時(shí)為什么會(huì)出現(xiàn)一段方波?

    ad9910在使用ram模式時(shí)單片機(jī)給他傳輸波形數(shù)據(jù)總是會(huì)出現(xiàn)一段先低后高的波形,請(qǐng)問(wèn)怎么消除這段波形,或者說(shuō)問(wèn)什么會(huì)出現(xiàn)這段波形,這段波形出現(xiàn)有什么規(guī)律嗎?請(qǐng)幫忙解答下,謝謝各位佬。 就是這樣
    發(fā)表于 06-12 10:25

    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ì)介紹下人類算力的演進(jìn)過(guò)程。這是一段波瀾壯闊的歷史,值得我們駐足與回憶。Chrent人工算力時(shí)代人類對(duì)算力的利用,從遠(yuǎn)古時(shí)期就已經(jīng)開(kāi)始了。大腦,是我們最原生的算力工具
    的頭像 發(fā)表于 04-04 08:26 ?721次閱讀
    算力簡(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)行程序,同一段代買執(zhí)行時(shí)間是不是在RAM中更短,如果RAM中執(zhí)行效率更高,如何將代碼全部拷貝到RAM中運(yùn)行
    發(fā)表于 02-19 07:10