精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何組織構建多文件C語言程序(一)

開發 后端
準備好你喜歡的飲料、編輯器和編譯器,放一些音樂,然后開始構建一個由多個文件組成的 C 語言程序。

[[319002]]

準備好你喜歡的飲料、編輯器和編譯器,放一些音樂,然后開始構建一個由多個文件組成的 C 語言程序。

大家常說計算機編程的藝術部分是處理復雜性,部分是命名某些事物。此外,我認為“有時需要添加繪圖”是在很大程度上是正確的。

在這篇文章里,我會編寫一個小型 C 程序,命名一些東西,同時處理一些復雜性。該程序的結構大致基于我在 《如何寫一個好的 C 語言 main 函數》 文中討論的。但是,這次做一些不同的事。準備好你喜歡的飲料、編輯器和編譯器,放一些音樂,讓我們一起編寫一個有趣的 C 語言程序。

優秀 Unix 程序哲學

首先,你要知道這個 C 程序是一個 Unix 命令行工具。這意味著它運行在(或者可被移植到)那些提供 Unix C 運行環境的操作系統中。當貝爾實驗室發明 Unix 后,它從一開始便充滿了設計哲學。用我自己的話來說就是:程序只做一件事,并做好它,并且對文件進行一些操作。雖然“只做一件事,并做好它”是有意義的,但是“對文件進行一些操作”的部分似乎有點兒不合適。

事實證明,Unix 中抽象的 “文件” 非常強大。一個 Unix 文件是以文件結束符(EOF)標志為結尾的字節流。僅此而已。文件中任何其它結構均由應用程序所施加而非操作系統。操作系統提供了系統調用,使得程序能夠對文件執行一套標準的操作:打開、讀取、寫入、尋址和關閉(還有其他,但說起來那就復雜了)。對于文件的標準化訪問使得不同的程序共用相同的抽象,而且可以一同工作,即使它們是不同的人用不同語言編寫的程序。

具有共享的文件接口使得構建可組合的的程序成為可能。一個程序的輸出可以作為另一個程序的輸入。Unix 家族的操作系統默認在執行程序時提供了三個文件:標準輸入(stdin)、標準輸出(stdout)和標準錯誤(stderr)。其中兩個文件是只寫的:stdoutstderr。而 stdin 是只讀的。當我們在常見的 Shell 比如 Bash 中使用文件重定向時,可以看到其效果。

  1. $ ls | grep foo | sed -e 's/bar/baz/g' > ack

這條指令可以被簡要地描述為:ls 的結果被寫入標準輸出,它重定向到 grep 的標準輸入,grep 的標準輸出重定向到 sed 的標準輸入,sed 的標準輸出重定向到當前目錄下文件名為 ack 的文件中。

我們希望我們的程序在這個靈活又出色的生態系統中運作良好,因此讓我們編寫一個可以讀寫文件的程序。

喵嗚喵嗚:流編碼器/解碼器概念

當我還是一個露著豁牙的孩子懵懵懂懂地學習計算機科學時,學過很多編碼方案。它們中的有些用于壓縮文件,有些用于打包文件,另一些毫無用處因此顯得十分愚蠢。列舉最后這種情況的一個例子:哞哞編碼方案

為了讓我們的程序有個用途,我為它更新了一個 21 世紀 的概念,并且實現了一個名為“喵嗚喵嗚” 的編碼方案的概念(畢竟網上大家都喜歡貓)。這里的基本的思路是獲取文件并且使用文本 “meow” 對每個半字節(半個字節)進行編碼。小寫字母代表 0,大寫字母代表 1。因為它會將 4 個比特替換為 32 個比特,因此會擴大文件的大小。沒錯,這毫無意義。但是想象一下人們看到經過這樣編碼后的驚訝表情。

  1. $ cat /home/your_sibling/.super_secret_journal_of_my_innermost_thoughts
  2. MeOWmeOWmeowMEoW...

這非常棒。

最終的實現

完整的源代碼可以在 GitHub 上面找到,但是我會寫下我在編寫程序時的思考。目的是說明如何組織構建多文件 C 語言程序。

既然已經確定了要編寫一個編碼和解碼“喵嗚喵嗚”格式的文件的程序時,我在 Shell 中執行了以下的命令 :

  1. $ mkdir meowmeow
  2. $ cd meowmeow
  3. $ git init
  4. $ touch Makefile     # 編譯程序的方法
  5. $ touch main.c       # 處理命令行選項
  6. $ touch main.h       # “全局”常量和定義
  7. $ touch mmencode.c   # 實現對喵嗚喵嗚文件的編碼
  8. $ touch mmencode.h   # 描述編碼 API
  9. $ touch mmdecode.c   # 實現對喵嗚喵嗚文件的解碼
  10. $ touch mmdecode.h   # 描述解碼 API
  11. $ touch table.h      # 定義編碼查找表
  12. $ touch .gitignore   # 這個文件中的文件名會被 git 忽略
  13. $ git add .
  14. $ git commit -m "initial commit of empty files"

簡單的說,我創建了一個目錄,里面全是空文件,并且提交到 git。

即使這些文件中沒有內容,你依舊可以從它的文件名推斷每個文件的用途。為了避免萬一你無法理解,我在每條 touch 命令后面進行了簡單描述。

通常,程序從一個簡單 main.c 文件開始,只有兩三個解決問題的函數。然后程序員輕率地向自己的朋友或者老板展示了該程序,然后為了支持所有新的“功能”和“需求”,文件中的函數數量就迅速爆開了。“程序俱樂部”的第一條規則便是不要談論“程序俱樂部”,第二條規則是盡量減少單個文件中的函數。

老實說,C 編譯器并不關心程序中的所有函數是否都在一個文件中。但是我們并不是為計算機或編譯器寫程序,我們是為其他人(有時也包括我們)去寫程序的。我知道這可能有些奇怪,但這就是事實。程序體現了計算機解決問題所采用的一組算法,當問題的參數發生了意料之外的變化時,保證人們可以理解它們是非常重要的。當在人們修改程序時,發現一個文件中有 2049 函數時他們會詛咒你的。

因此,優秀的程序員會將函數分隔開,將相似的函數分組到不同的文件中。這里我用了三個文件 main.cmmencode.cmmdecode.c。對于這樣小的程序,也許看起來有些過頭了。但是小的程序很難保證一直小下去,因此哥忒拓展做好計劃是一個“好主意”。

但是那些 .h 文件呢?我會在后面解釋一般的術語,簡單地說,它們被稱為頭文件,同時它們可以包含 C 語言類型定義和 C 預處理指令。頭文件中不應該包含任何函數。你可以認為頭文件是提供了應用程序接口(API)的定義的一種 .c 文件,可以供其它 .c 文件使用。

但是 Makefile 是什么呢?

我知道下一個轟動一時的應用都是你們這些好孩子們用 “終極代碼粉碎者 3000” 集成開發環境來編寫的,而構建項目是用 Ctrl-Meta-Shift-Alt-Super-B 等一系列復雜的按鍵混搭出來的。但是如今(也就是今天),使用 Makefile 文件可以在構建 C 程序時幫助做很多有用的工作。Makefile 是一個包含如何處理文件的方式的文本文件,程序員可以使用其自動地從源代碼構建二進制程序(以及其它東西!)

以下面這個小東西為例:

  1. 00 # Makefile
  2. 01 TARGET= my_sweet_program
  3. 02 $(TARGET): main.c
  4. 03    cc -o my_sweet_program main.c

# 符號后面的文本是注釋,例如 00 行。

01 行是一個變量賦值,將 TARGET 變量賦值為字符串 my_sweet_program。按照慣例,也是我的習慣,所有 Makefile 變量均使用大寫字母并用下劃線分隔單詞。

02 行包含該步驟recipe要創建的文件名和其依賴的文件。在本例中,構建目標targetmy_sweet_program,其依賴是 main.c

最后的 03 行使用了一個制表符號(tab)而不是四個空格。這是將要執行創建目標的命令。在本例中,我們使用 C 編譯器C compiler前端 cc 以編譯鏈接為 my_sweet_program

使用 Makefile 是非常簡單的。

  1. $ make
  2. cc -o my_sweet_program main.c
  3. $ ls
  4. Makefile  main.c  my_sweet_program

構建我們喵嗚喵嗚編碼器/解碼器的 Makefile 比上面的例子要復雜,但其基本結構是相同的。我將在另一篇文章中將其分解為 Barney 風格。

形式伴隨著功能

我的想法是程序從一個文件中讀取、轉換它,并將轉換后的結果存儲到另一個文件中。以下是我想象使用程序命令行交互時的情況:

  1. $ meow < clear.txt > clear.meow
  2. $ unmeow < clear.meow > meow.tx
  3. $ diff clear.txt meow.tx
  4. $

我們需要編寫代碼以進行命令行解析和處理輸入/輸出流。我們需要一個函數對流進行編碼并將結果寫到另一個流中。最后,我們需要一個函數對流進行解碼并將結果寫到另一個流中。等一下,我們在討論如何寫一個程序,但是在上面的例子中,我調用了兩個指令:meowunmeow?我知道你可能會認為這會導致越變越復雜。

次要內容:argv[0] 和 ln 指令

回想一下,C 語言 main 函數的結構如下:

  1. int main(int argc, char *argv[])

其中 argc 是命令行參數的數量,argv 是字符指針(字符串)的列表。argv[0] 是包含正在執行的程序的文件路徑。在 Unix 系統中許多互補功能的程序(比如:壓縮和解壓縮)看起來像兩個命令,但事實上,它們是在文件系統中擁有兩個名稱的一個程序。這個技巧是通過使用 ln 命令創建文件系統鏈接來實現兩個名稱的。

在我筆記本電腦中 /usr/bin 的一個例子如下:

  1. $ ls -li /usr/bin/git*
  2. 3376 -rwxr-xr-x. 113 root root     1.5M Aug 30  2018 /usr/bin/git
  3. 3376 -rwxr-xr-x. 113 root root     1.5M Aug 30  2018 /usr/bin/git-receive-pack
  4. ...

這里 gitgit-receive-pack 是同一個文件但是擁有不同的名字。我們說它們是相同的文件因為它們具有相同的 inode 值(第一列)。inode 是 Unix 文件系統的一個特點,對它的介紹超越了本文的內容范疇。

優秀或懶惰的程序可以通過 Unix 文件系統的這個特點達到寫更少的代碼但是交付雙倍的程序。首先,我們編寫一個基于其 argv[0] 的值而作出相應改變的程序,然后我們確保為導致該行為的名稱創建鏈接。

在我們的 Makefile 中,unmeow 鏈接通過以下的方式來創建:

  1. # Makefile
  2. ...
  3. $(DECODER): $(ENCODER)
  4. $(LN) -f $< $@
  5. ...

我傾向于在 Makefile 中將所有內容參數化,很少使用 “裸” 字符串。我將所有的定義都放置在 Makefile 文件頂部,以便可以簡單地找到并改變它們。當你嘗試將程序移植到新的平臺上時,需要將 cc 改變為某個 cc 時,這會很方便。

除了兩個內置變量 $@$< 之外,該步驟recipe看起來相對簡單。第一個便是該步驟的目標的快捷方式,在本例中是 $(DECODER)(我能記得這個是因為 @ 符號看起來像是一個目標)。第二個,$< 是規則依賴項,在本例中,它解析為 $(ENCODER)

事情肯定會變得復雜,但它還在管理之中。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-03-18 12:23:49

C語言編程語言

2020-12-15 11:23:09

數據驅動企業數字化

2023-08-17 20:13:42

2011-07-05 17:07:14

C語言

2018-02-24 12:17:56

C程序內存方式

2012-06-27 10:28:12

編程語言語言學習多門語言

2015-08-17 17:57:43

IT性能運維

2009-07-31 17:14:19

C#語言Web程序

2011-07-22 15:10:51

Objective-C 文件

2009-08-13 17:04:09

C#語言C#程序

2019-07-29 08:00:18

文件容器Docker Comp

2023-12-08 14:32:02

C語言編程文件操作

2025-03-21 08:00:00

大型語言模型視覺語言微調

2023-09-27 23:38:29

C程序

2009-06-15 11:03:10

Java語言C#語言

2023-09-21 08:00:00

ChatGPT編程工具

2025-04-18 08:37:09

2010-01-22 11:23:06

C++程序

2012-08-13 09:31:33

程序

2017-03-02 11:10:39

AndroidMVVM應用程序
點贊
收藏

51CTO技術棧公眾號

青青成人在线| 性亚洲最疯狂xxxx高清| 性鲍视频在线观看| 97超碰资源站在线观看| 国产成人在线观看| 久久久久中文字幕2018| 精品久久久久久中文字幕人妻最新| 范冰冰一级做a爰片久久毛片| 久久精品视频免费| 国产日韩欧美综合| 玩弄japan白嫩少妇hd| 国产免费黄色大片| 国模一区二区三区| 国产亚洲xxx| 肉色超薄丝袜脚交| 亚洲天堂av影院| 亚洲天堂网中文字| 精品乱码一区二区三区| 中文字幕人妻一区二区三区视频| 欧美激情在线| 国产一区二区三区视频| 欧美一级大片免费看| 午夜日韩成人影院| 亚洲国产一区二区视频| 午夜精品美女久久久久av福利| 成 人 黄 色 片 在线播放| 久久国产精品久久w女人spa| 欧美大胆在线视频| 毛片久久久久久| 欧美挤奶吃奶水xxxxx| 欧美剧情电影在线观看完整版免费励志电影 | www久久久| 欧美午夜精品久久久久久久| 国产成人亚洲欧美| 中文字幕乱码视频| 一区二区三区四区五区在线| 美乳少妇欧美精品| 日本午夜精品视频| 成人免费视频观看视频| 国产精品永久久久久久久久久| 久久黄色网页| 26uuu国产精品视频| 精品无码久久久久久久久| 国产精区一区二区| 欧美亚洲免费在线一区| 日本一区二区三区视频免费看| 亚洲成人av综合| 亚洲自拍偷拍网| 欧美精品九九99久久| 国产成人无码a区在线观看视频| 黄a在线观看| 国产精品电影一区二区三区| 日本一区二区三区四区高清视频 | 亚洲精品久久久久| 亚洲av无码久久精品色欲| 91视频亚洲| 欧美久久免费观看| 在线观看高清免费视频| 97久久香蕉国产线看观看| 狠狠躁天天躁日日躁欧美| 日韩精品一区二区免费| 黄色av中文字幕| 亚洲一区成人| 欧美激情一区二区三区久久久 | 婷婷亚洲五月| 色99之美女主播在线视频| 舐め犯し波多野结衣在线观看| 中文有码一区| 亚洲深夜福利在线| 天天干天天舔天天操| 日产精品一区二区| 少妇高潮 亚洲精品| 日韩在线不卡av| 91精品国产福利在线观看麻豆| 久久视频在线视频| 国产精品99久久久久久成人| 亚洲高清资源在线观看| 久久精品视频一| 超碰在线国产97| 欧美美女啪啪| 亚洲欧美日韩久久久久久 | 激情av综合| 亚洲精品国产精品久久清纯直播 | 中文天堂在线播放| 美女一区二区视频| 久久久久久久久爱| 日韩精品视频免费播放| 国产精品女主播一区二区三区| 日韩美女在线观看| 国产精品一区二区黑人巨大| 国产99久久久国产精品免费看| 好吊色欧美一区二区三区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 欧美国产精品劲爆| 波多野结衣 作品| 无遮挡爽大片在线观看视频| 精品视频一区 二区 三区| 一卡二卡三卡四卡五卡| 小说区图片区色综合区| 久久精品人人爽| 日韩不卡视频在线| 国产主播精品| 日本高清久久天堂| 国产麻豆精品一区| 97精品国产露脸对白| 亚洲精品第一区二区三区| 午夜av免费在线观看| 国产人妖乱国产精品人妖| 中文字幕一区二区三区四区五区| 牛牛影视精品影视| 亚洲欧洲日韩综合一区二区| av免费观看国产| 欧美草逼视频| 91黄色在线观看| 能在线观看的av| 亚洲男人在线| 亚洲欧美精品一区二区| 国产精品白嫩白嫩大学美女| 久久亚洲一区| 国产精品久久久久久久久久久久午夜片 | 亚洲国产精久久久久久久| 91在线第一页| 九色精品国产蝌蚪| 久久久爽爽爽美女图片| 国产又黄又大又爽| 国产婷婷色一区二区三区| 97超碰在线人人| 国产亚洲精aa在线看| 亚洲石原莉奈一区二区在线观看| 久久精品国产亚洲av香蕉| 午夜欧美精品| 国产精品免费电影| 亚洲av成人精品日韩在线播放| 亚洲女子a中天字幕| 免费在线观看的毛片| 福利电影一区| 欧美高清电影在线看| 超碰手机在线观看| 日本亚洲欧美天堂免费| 国产精品视频最多的网站| 亚洲午夜无码久久久久| 99国产一区二区三精品乱码| 日韩中文字幕亚洲精品欧美| 91精品网站在线观看| 一区二区欧美激情| 国产一级免费视频| 99久久99久久精品免费观看| 亚洲国产一二三精品无码| **国产精品| 久久激情五月丁香伊人| 亚洲最大成人在线视频| 国产精品天天摸av网| 成人性生生活性生交12| 国产精品片aa在线观看| 日本aⅴ大伊香蕉精品视频| 外国精品视频在线观看 | 激情综合五月| 麻豆国产va免费精品高清在线| 一区二区三区黄色片| 一区在线中文字幕| 午夜福利123| 欧美激情五月| 国产日韩一区二区三区| 欧美gv在线| 亚洲深夜福利在线| 亚洲中文字幕一区二区| 国产精品乱码一区二三区小蝌蚪| 最新视频 - x88av| 国产在线视频欧美一区| 美女性感视频久久久| 亚洲精品成人电影| 婷婷丁香久久五月婷婷| 91中文字幕永久在线| 男男视频亚洲欧美| 中文字幕一区二区三区在线乱码| 国产精品一站二站| 韩国欧美亚洲国产| 欧洲视频在线免费观看| 欧美视频在线一区二区三区| 99成人在线观看| 国产精品18久久久| a在线视频观看| 精品精品99| 亚洲bt欧美bt日本bt| 91超碰在线免费| 亚洲网在线观看| 国产美女三级无套内谢| 亚洲综合一区二区精品导航| 美女又爽又黄视频毛茸茸| 日av在线不卡| 国产911在线观看| 欧洲精品一区| 国产日韩在线免费| 1区2区在线| 伊人精品在线观看| 亚洲a视频在线观看| 欧美性jizz18性欧美| 农村老熟妇乱子伦视频| 福利视频网站一区二区三区| 日韩精品视频久久| 综合国产在线| 欧洲精品在线一区| 亚洲小说春色综合另类电影| 热re99久久精品国产66热| 国产在线观看a| 亚洲欧美日韩另类| 乱色精品无码一区二区国产盗| 色视频一区二区| 久久精品www人人爽人人| 国产欧美日韩三区| 久久性爱视频网站| 久久国产精品99久久久久久老狼| 免费一级特黄毛片| 亚洲欧洲美洲一区二区三区| 欧美二级三级| 国产精品毛片视频| 91精品啪aⅴ在线观看国产| 中文字幕乱码中文乱码51精品| 久久精品国产一区二区电影| 青青视频在线观| 精品久久久久久久久久久久久久久| 久久午夜鲁丝片| 欧美日韩激情视频| 久久97人妻无码一区二区三区| 国产精品二三区| 国产精品成人无码免费| av在线一区二区| 国产免费无码一区二区| 久久国产精品99精品国产 | 欧美大香线蕉线伊人久久| 99精品在免费线中文字幕网站一区| 国产精品福利在线观看网址| 麻豆mv在线看| 97人人做人人爱| 免费黄网站在线播放| 中文字幕久热精品视频在线| 亚洲色大成网站www| 亚洲国产成人一区| 亚洲精品免费在线观看视频| 91精品国产手机| 91在线你懂的| 欧美疯狂性受xxxxx喷水图片| 波多野结衣电车| 日本丶国产丶欧美色综合| 在线观看黄网站| 精品久久久久久久久久久久久 | 91久久久久久久| 96视频在线观看欧美| 国产乱人伦真实精品视频| 成人在线视频观看| 国产精品欧美久久久| 成人精品高清在线视频| 国产精品天天狠天天看| 黑人一区二区三区| 成人xvideos免费视频| 欧美一级做一级爱a做片性| 国产一区二区在线免费视频| 自拍偷拍欧美日韩| 亚洲mm色国产网站| 色播一区二区| 国产精品一区二区a| 日本成人7777| 日本不卡一区二区三区在线观看| 国产亚洲电影| 一区二区三区四区| 中文精品久久| 欧美精品久久久久久久久久久| 亚洲毛片网站| 亚洲一区二区在| 婷婷久久一区| 国产真人做爰毛片视频直播 | 亚洲三级在线播放| 欧美成人精品欧美一级私黄| 亚洲自拍另类综合| 国产小视频在线免费观看| 色婷婷一区二区三区四区| 五月天中文字幕| 欧美一区二区在线视频| 人妻视频一区二区三区| 亚洲日韩中文字幕| 精品黄色免费中文电影在线播放| 欧美激情免费看| 天堂中文av在线资源库| 国产在线日韩在线| 亚洲专区**| 秋霞久久久久久一区二区| 99精品一区| av免费观看国产| 麻豆一区二区三区| 免费观看污网站| 日本一区二区久久| 久草视频免费在线播放| 色综合天天综合| 99久久精品国产一区色| 日韩电影中文字幕在线观看| 在线播放日本| 97色在线播放视频| 香蕉久久一区| 久久99欧美| 国产精品15p| 色综合电影网| 激情欧美日韩| 300部国产真实乱| 国产精品毛片| 日本少妇一区二区三区| 国产亚洲一本大道中文在线| 真实国产乱子伦对白在线| 色欧美日韩亚洲| xxxx18国产| 中文字幕亚洲天堂| 密臀av在线播放| 亚洲一区二区三区久久| 精品盗摄女厕tp美女嘘嘘| www.男人天堂网| 久久99精品国产麻豆婷婷洗澡| 强迫凌虐淫辱の牝奴在线观看| 国产高清精品在线| 国产1区2区在线观看| 精品国产户外野外| 国产高潮流白浆喷水视频| 欧美精品在线观看一区二区| 日韩亚洲视频在线观看| 色综合久久久888| 日韩一区二区三区四区五区 | 欧美国产美女| av动漫免费观看| 久久不射中文字幕| 在线xxxxx| 亚洲综合男人的天堂| 11024精品一区二区三区日韩| 亚洲深夜福利视频| 激情都市亚洲| 免费电影一区| 亚洲综合丁香| 免费观看一级一片| 性做久久久久久免费观看欧美| www香蕉视频| 欧美另类精品xxxx孕妇| 亚洲资源在线| 伊甸园精品99久久久久久| 日韩在线a电影| 久久久久久国产精品无码| 欧美天天综合色影久久精品| 天堂网www中文在线| 久久久亚洲成人| 国产精品45p| 精品国偷自产一区二区三区| 国产成人综合亚洲91猫咪| 天天看片中文字幕| 日韩一区二区三区四区五区六区| 超碰在线无需免费| 亚洲精品日韩激情在线电影| 亚洲精品一区二区在线看| 天堂在线中文在线| 最新久久zyz资源站| 国产日韩精品suv| 精品中文字幕乱| 成人偷拍自拍| 国产成人精品视频免费看| 91色婷婷久久久久合中文| japanese国产在线观看| 中文字幕日韩高清| 日韩国产大片| 男人的天堂成人| 成人一区二区视频| caoporn国产| 中文字幕欧美日韩在线| vam成人资源在线观看| 999一区二区三区| 91免费看片在线观看| 亚洲 小说区 图片区| 久久精品国产99国产精品澳门| 欧美久久亚洲| 日韩在线综合网| 中文字幕免费一区| 99久久精品国产色欲| 午夜精品在线视频| 国产一区二区三区网| 日韩av片免费观看| 亚洲v精品v日韩v欧美v专区| 欧美女子与性| 91九色综合久久| 亚洲欧洲日本一区二区三区| 69视频在线观看免费| 91精品免费在线观看| h片在线观看| 亚洲欧美国产精品桃花| 国产成人三级在线观看| 亚洲自拍一区在线观看| 久久精品国产成人| 亚洲第一福利社区| 午夜福利123| 色综合天天综合网国产成人综合天 | 国产一级淫片a视频免费观看| 综合久久五月天| 韩国精品福利一区二区三区| 天堂网在线免费观看| 午夜免费久久看| 久久久久久国产精品免费无遮挡| 国内视频一区|