有個(gè)小伙伴在我們的嵌入式交流群里發(fā)了類似下面的一張圖,
頓時(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ò)
他也把自己的代碼貼上來(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
-
嵌入式
+關(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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論