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

同事C代碼中的#、##把我秀了

開發(fā) 后端
#和##對于大部分C語言玩得還算比較溜的朋友并不是很陌生,不過能把這兩個知識點游刃有余的應(yīng)用到所在代碼中的每個角落,似乎并沒有幾個人能夠做到,學(xué)的時候朗朗上口,而編碼的時候卻拋之腦后。

 [[438431]]

正文

大家好,我是bug菌!

#和##對于大部分C語言玩得還算比較溜的朋友并不是很陌生,不過能把這兩個知識點游刃有余的應(yīng)用到所在代碼中的每個角落,似乎并沒有幾個人能夠做到,學(xué)的時候朗朗上口,而編碼的時候卻拋之腦后。

但是今天bug菌還是想重新介紹這兩個“兄弟”,希望大家能夠?qū)懗?quot;秀"一點的代碼~

1.#和##基礎(chǔ)

對于這兩個語法的功能都比較簡單,且都是在預(yù)處理階段做一些工作 :

  •  #主要是將宏參數(shù)轉(zhuǎn)化為字符串
  •  ##主要是將兩個標(biāo)識符拼接成一個標(biāo)識符

沒點代碼似乎并不是那么形象 : 

參考demo: 

  1. 1#include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4//#的簡單使用   
  5.  5#define STR(str) #str  
  6.  6  
  7.  7//##的簡單使用  
  8.  8#define  CMB(a,b) a##b  
  9.  9  
  10. 10int main(int argc, char *argv[]) {  
  11. 11  
  12. 12    int CMB(uart,1) = 5;  
  13. 13    int CMB(uart,2) = 10;  
  14. 14  
  15. 15    printf("#的簡單使用:\r\n");  
  16. 16    printf("%s\r\n",STR(3.1415));  
  17. 17    printf("%s\r\n",STR(abcd));  
  18. 18  
  19. 19    printf("##的簡單使用:\r\n");  
  20. 20    printf("%d\r\n",uart1);      
  21. 21    printf("%d\r\n",uart2);  
  22. 22  
  23. 23    return 0;  
  24. 24} 

輸出結(jié)果:

從結(jié)果上看來似乎#僅僅只是代替了字符串的雙引號,而##卻實現(xiàn)了標(biāo)識符的拼接,這樣就為編碼標(biāo)識符的處理上能夠帶來更多的可玩性。

那么,下面bug菌跟大家具體展示一下他們的常用技巧:

2.#的玩法

(1)標(biāo)識符的“字符串變量"

“#”一般結(jié)合打印語句組合成一個宏定義,可以方便的打印相關(guān)信息,下面給個簡單的實例就明白了。 

  1. 1#include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4//#打印調(diào)試   
  5.  5#define DebugLogExpr(Expr)     printf("%s : %d\r\n",#Expr, Expr);    
  6.  6  
  7.  7//私有參數(shù)訪問   
  8.  8int sFucntion(void)  
  9.  9{  
  10. 10    static int var = 10 
  11. 11    return var;  
  12. 12}   
  13. 13  
  14. 14int main(int argc, char *argv[]) {  
  15. 15  
  16. 16    int DebugVar = 50 
  17. 17  
  18. 18    DebugLogExpr(DebugVar);     //直接打印變量名和變量   
  19. 19    DebugLogExpr(100/5);        //打印表達(dá)式及結(jié)果   
  20. 20    DebugLogExpr(sFucntion());  //打印相關(guān)函數(shù)名及結(jié)果   
  21. 21  
  22. 22    return 1;  
  23. 23} 

輸出結(jié)果:

這樣的話就不需要總是采用雙引號來單獨書寫,同時你還可以繼續(xù)擴(kuò)展構(gòu)造更加靈活的宏。

(2)結(jié)合##進(jìn)行字符串拼接打印

前面介紹了##進(jìn)行標(biāo)識符的拼接,那么實現(xiàn)拼接標(biāo)識符轉(zhuǎn)化為字符串看來很簡單吧,于是你會編寫了如下代碼: 

  1.  1#include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4//#的簡單使用   
  5.  5#define STR(str) #str  
  6.  6  
  7.  7//##的簡單使用  
  8.  8#define  CMB(a,b) a##b  
  9.  9  
  10. 10int main(int argc, char *argv[]) {  
  11. 11  
  12. 12    int CMB(uart,1) = 5;  
  13. 13  
  14. 14    printf("%s\r\n",STR(CMB(uart,1)));  
  15. 15  
  16. 16    return 0;  
  17. 17} 

暗自歡喜的編譯著,然而卻得到了如下結(jié)果:

得到的并不是拼接以后你想要的uart1,難道不能這么玩?當(dāng)然不是,不然也不會在這里拿出來說 。

首先要知道原因 : 進(jìn)行宏定義嵌套的情況,#或者##僅在當(dāng)前宏有效,嵌套宏中不會再次展開,既然當(dāng)前宏無法展開,那么我只能再加一級宏定義作為轉(zhuǎn)換宏進(jìn)行展開,看能不能解決該問題: 

  1.  1 #include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4//#的簡單使用   
  5.  5#define STR(str) #str  
  6.  6  
  7.  7//##的簡單使用  
  8.  8#define  CMB(a,b) a##b  
  9.  9  
  10. 10#define STR_CON(str) STR(str)  //轉(zhuǎn)換宏   
  11. 11  
  12. 12int main(int argc, char *argv[]) {  
  13. 13  
  14. 14    int CMB(uart,1) = 5;  
  15. 15  
  16. 16    printf("%s\r\n",STR_CON(CMB(uart,1)));  
  17. 17  
  18. 18    return 0;  
  19. 19} 

此時輸出的結(jié)果符合我們的預(yù)期:

首先進(jìn)行第一層轉(zhuǎn)換宏替換處理掉##拼接符得到str(uart1),然后進(jìn)行字符串轉(zhuǎn)換符的處理為uart1字符串打印輸出,當(dāng)然以后你會遇到一些復(fù)雜的,不過要訣就是宏替換只會處理當(dāng)前的#或者##,否則就需要增加轉(zhuǎn)換宏提前進(jìn)行宏替換展開。

所以采用##拼接出來的標(biāo)識符想要打印輸出的話,使用#進(jìn)行轉(zhuǎn)換是最直接、方便的。

3.##的玩法

##拼接符的玩法有點多,甚至有些還比較繞,當(dāng)然如果你游刃有余的話,這對于重構(gòu)代碼是一把“ 利器 ”。

(1)在結(jié)構(gòu)體定義中的妙用

下面是bug菌經(jīng)常在項目代碼中用到的##結(jié)構(gòu)體定義法,也是非常多開源代碼中慣用的做法,相比常規(guī)的結(jié)構(gòu)體定義法,確實省去很多重復(fù)的代碼。

比如下面的參考代碼 :  

  1. 1#include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4#define DF_STRUCT(name) typedef struct tag##name name;\  
  5.  5                         struct tag##name  
  6.  6  
  7.  7DF_STRUCT(DevManage) 
  8.  8{  
  9.  9    int index;   //索引   
  10. 10    int Access;  //權(quán)限  
  11. 11                  //...    
  12. 12};  
  13. 13  
  14. 14int main(int argc, char *argv[]) {  
  15. 15  
  16. 16   DevManage stDevManage;  
  17. 17  
  18. 18   stDevManage.index  = 1 
  19. 19   stDevManage.Access = 666 
  20. 20  
  21. 21    printf("Dev Index :%d\n",stDevManage.index );  
  22. 22    printf("Dev Access:%d\n",stDevManage.Access );  
  23. 23  
  24. 24    return 1;  
  25. 25} 

(2)統(tǒng)一宏替換

拼接標(biāo)識符意味著符號的粒度更高,而這碎片化的符號進(jìn)行有效的管理,就可以使得符號更加具有通用性和靈活性。

其實這種思想跟我們代碼模塊話是同樣的道理。

來首先我們用一個兩層拼接體驗一下: 

  1.  1#include <stdio.h>  
  2.  2#include <stdlib.h>  
  3.  3  
  4.  4//假如這是stm32庫中的宏   
  5.  5#define GPIO_Pin_0                 ((int)0x0001)  /*!< Pin 0 selected */  
  6.  6#define GPIO_Pin_1                 ((int)0x0002)  /*!< Pin 1 selected */  
  7.  7#define GPIO_Pin_2                 ((int)0x0004)  /*!< Pin 2 selected */  
  8.  8#define GPIO_Pin_3                 ((int)0x0008)  /*!< Pin 3 selected */  
  9.  9  
  10. 10#define USART1              ((int *) 0x1000)  
  11. 11#define USART2              ((int *) 0x2000)  
  12. 12 
  13. 13  
  14. 14//拼接變量   
  15. 15#define UARTX 1  
  16. 16  
  17. 17//最終的組合標(biāo)識符   
  18. 18#define UART1_CORE  USART1  
  19. 19#define UART1_RX    GPIO_Pin_0  
  20. 20#define UART1_TX    GPIO_Pin_1  
  21. 21 
  22. 22#define UART2_CORE  USART2  
  23. 23#define UART2_RX    GPIO_Pin_2  
  24. 24#define UART2_TX    GPIO_Pin_3  
  25. 25  
  26. 26//拼接過程   
  27. 27#define _UARTX_CORE(uartx)   UART##uartx##_CORE   
  28. 28#define UARTX_CORE(uartx)    _UARTX_CORE(uartx)  
  29. 29  
  30. 30  
  31. 31#define _UARTX_RX(uartx)   UART##uartx##_RX  
  32. 32#define UARTX_RX(uartx)    _UARTX_RX(uartx)   
  33. 33  
  34. 34#define _UARTX_TX(uartx)   UART##uartx##_TX  
  35. 35#define UARTX_TX(uartx)    _UARTX_TX(uartx)  
  36. 36  
  37. 37 
  38. 38int main(int argc, char *argv[]) {  
  39. 39  
  40. 40    //組合標(biāo)識符的使用   
  41. 41    printf("0x%x\n",UARTX_CORE(UARTX));  
  42. 42    printf("0x%x\n",UARTX_RX(UARTX));  
  43. 43    printf("0x%x\n",UARTX_TX(UARTX));  
  44. 44  
  45. 45    return 1;  
  46. 46} 

編寫的思路bug菌在代碼中跟大家都標(biāo)注了,相信大家一眼就能看懂,似乎并沒有想象中那么難。

而在前面介紹##的基礎(chǔ)知識提過,只要轉(zhuǎn)換宏寫得夠多,你可以一層套一層,最終獲得你想要的標(biāo)識符,達(dá)到修改一個簡單的宏即可替換一整套宏的效果。

所以關(guān)鍵還是你要清晰的把拼接變量找出來,bug菌這里僅展示了一個拼接變量,當(dāng)然多個也是同樣沒有問題的,跟我們函數(shù)傳遞參數(shù)一樣,不過這樣也會增加整個替換的復(fù)雜度,合理利用即可~

最后

好了,今天的內(nèi)容就分享到這里,我仍然是我,一直沒變,覺得有所收獲,記得點個贊。

 

責(zé)任編輯:龐桂玉 來源: C語言與C++編程
相關(guān)推薦

2021-11-18 07:55:03

Reduce驗證數(shù)組

2020-10-31 09:06:37

C語言編程語言

2022-03-23 08:01:04

Python語言代碼

2020-05-15 09:30:12

代碼函數(shù)語言

2020-04-07 08:00:02

Redis緩存數(shù)據(jù)

2021-01-18 11:27:03

Istio架構(gòu)云環(huán)境

2020-03-20 08:00:32

代碼程序員追求

2020-10-16 09:09:56

代碼業(yè)務(wù)模型

2020-04-14 10:06:20

微服務(wù)Netflix語言

2021-04-27 07:52:19

StarterSpring Boot配置

2020-07-07 10:55:01

C++C語言代碼

2024-11-19 08:36:16

2024-05-14 08:20:59

線程CPU場景

2021-10-11 09:38:46

模型Transformer代碼

2022-10-08 00:03:00

Debug技巧調(diào)試

2024-01-04 14:16:05

騰訊紅黑樹Socket

2020-12-09 15:00:08

編程IT線程

2020-12-09 08:27:48

并發(fā)編程編程開發(fā)

2021-07-22 07:50:47

刪庫系統(tǒng)數(shù)據(jù)

2020-04-30 11:25:32

Insert into數(shù)據(jù)庫索引
點贊
收藏

51CTO技術(shù)棧公眾號

欧美夫妻性生活| 蜜臀av一区二区在线免费观看 | 少妇高潮喷水在线观看| 日批免费在线观看| 视频一区欧美日韩| 欧美福利视频在线观看| 美女久久久久久久久久| 自拍偷拍亚洲图片| 天天色综合成人网| 日本不卡免费新一二三区| 国产又粗又猛又黄| 99在线精品视频在线观看| 国产一区二区三区在线观看网站 | 日韩 欧美 综合| jlzzjlzz亚洲女人| 精品国产乱码久久久久久久| av丝袜天堂网| a级黄色小视频| 尤物tv国产一区| 不要播放器的av网站| 麻豆传媒在线免费看| av中文字幕亚洲| 国产欧美日韩中文字幕| 99精品视频99| 中文字幕一区二区三区欧美日韩| 日韩成人中文字幕在线观看| 国内自拍第二页| 厕沟全景美女厕沟精品| 亚洲综合男人的天堂| 亚洲日本无吗高清不卡| 视频一区二区在线播放| 欧美视频二区欧美影视| 欧美日韩在线免费观看| 成年在线观看视频| 欧美私人网站| 国产欧美精品一区二区色综合 | 国产成人午夜视频| 国产精品久久久久久网站| 国产在线视频99| 午夜精品视频一区二区三区在线看| 日韩精品在线观看一区| 国产伦精品一区二区三区妓女下载 | 国内精品视频一区二区三区| 国产不卡在线| 国产精品短视频| 日韩中文一区二区三区| 日韩a在线看| av一区二区三区在线| 久久电影网站中文字幕| 国产丝袜一区二区三区| 韩国三级hd两男一女| 亚洲啊v在线免费视频| 在线综合视频播放| 伊人五月天婷婷| japansex久久高清精品| 9191国产精品| 午夜xxxxx| 国产精品一区二区精品视频观看| 欧美美女视频在线观看| 奇米影音第四色| 狠狠久久综合| 欧美人伦禁忌dvd放荡欲情| 午夜久久久精品| 日本午夜精品久久久久| 91麻豆精品国产综合久久久久久 | 韩国欧美国产1区| 国产精品88av| 欧美日韩一区视频| 簧片在线免费看| 欧美aaa大片视频一二区| 色综合天天综合在线视频| 精品影院一区二区久久久| 亚洲精品不卡在线观看| 欧美一级特黄aaaaaa大片在线观看| caoporn成人| 精品免费日韩av| 无码人妻精品一区二区三区99不卡| 99re8这里有精品热视频免费 | 久久99热精品这里久久精品| 91在线播放观看| 天天色棕合合合合合合合| 99视频一区| 一本色道综合亚洲| 精品国产一二三| 人妻少妇偷人精品久久久任期| 久久久精品区| 亚洲风情亚aⅴ在线发布| 成年人的黄色片| 奇米狠狠一区二区三区| 久久天天躁狠狠躁夜夜躁2014| 免费又黄又爽又色的视频| 国产视频一区欧美| 国产免费成人av| 精品久久久久中文慕人妻| 99国产精品99久久久久久| 日韩高清av| а√资源新版在线天堂| 午夜精品成人在线视频| 超碰影院在线观看| 另类视频一区二区三区| 亚洲欧美国产日韩中文字幕| 三级在线观看免费大全| 99国产一区| 成人精品一区二区三区电影免费 | 精品黑人一区二区三区久久| 欧美伦理91i| 日本午夜一区二区三区| 亚洲天天影视| 亚洲成人免费影院| 日日噜噜夜夜狠狠| 男女黄床上色视频| 白嫩情侣偷拍呻吟刺激| 免费在线观看a级片| 黄色成人一级片| 国产91欧美| 福利视频导航一区| 肉色超薄丝袜脚交| 欧美裸体在线版观看完整版| 欧美极品少妇xxxxⅹ裸体艺术| 国产精华7777777| 99国内精品久久| 亚洲第一综合网站| 欧美123区| 日韩激情视频在线播放| 国产亚洲欧美精品久久久久久| 日韩综合小视频| 九九九九九精品| av在线下载| 欧美日韩成人一区二区| 中文字幕被公侵犯的漂亮人妻| 激情久久综合| 91福利入口| 九七久久人人| 欧美三级资源在线| 中文字幕免费视频| 午夜亚洲激情| 久久久婷婷一区二区三区不卡| av免费在线视| 福利一区福利二区微拍刺激| 日韩欧美a级成人黄色| 国产一二三四五| 素人啪啪色综合| 亚洲欧美一区二区精品久久久| 国产大片中文字幕| 极品一区美女高清| 视频一区二区三区在线| 国产精品久久久久久久一区探花| 国产精品一区二区三区免费观看| 日韩中文字幕视频在线| 欧美成人精品福利| 欧美视频在线一区| 欧美日韩国产限制| 一区二区三区在线播放| 国产精品色呦呦| 国产精品―色哟哟| 精品少妇一区二区三区视频免付费 | 亚洲精品久久久久久无码色欲四季| 中文字幕一区二区三中文字幕| gogogo高清免费观看在线视频| 欧美中文一区二区| 成人精品在线观看| 日韩少妇一区二区| 国产精品国产精品国产| 99久久婷婷国产| 日韩国产欧美亚洲| 天天久久夜夜| 久久精品视频久久| 瑟瑟视频在线观看| 亚洲精品视频大全| 麻豆传传媒久久久爱| 欧美交换配乱吟粗大25p| 超碰在线观看91| 91在线视频在线| 青青视频在线播放| 国内精品久久久久久久影视简单 | 国产精品高清无码在线观看| 天堂午夜影视日韩欧美一区二区| 日韩免费一区二区三区| 国产精品久久久久久久久久齐齐| 久久精品免费电影| 狠狠人妻久久久久久综合麻豆| 日韩欧美成人区| av黄色免费在线观看| 国产91在线|亚洲| 日韩av片永久免费网站| 国产污视频在线| 欧美精品777| 国产网站在线看| 国产女人18毛片水真多成人如厕 | 亚洲乱码精品| 日韩精品一区二区三区三区免费 | 国产女人水真多18毛片18精品 | 挪威xxxx性hd极品| 国产一级一区二区| 亚洲成人av动漫| 91蜜桃臀久久一区二区| 国产精品久久久久福利| 亚洲第一图区| 亚洲日韩中文字幕| 性一交一乱一精一晶| 欧美日韩中文字幕综合视频 | 手机看片一区二区| 欧美日韩免费在线视频| 懂色av.com| 国产精品久久久久9999吃药| 亚洲啪av永久无码精品放毛片| 全国精品久久少妇| 蜜桃传媒一区二区三区| 久久久影院免费| 久久av一区二区三区漫画| 国产精品亚洲四区在线观看| 欧美在线不卡区| 中文字幕资源网在线观看| 国产亚洲欧美视频| 西西人体44www大胆无码| 欧美疯狂做受xxxx富婆| 国产三级av片| 日韩美女啊v在线免费观看| 色欲av无码一区二区三区| 国内精品视频一区二区三区八戒| 97视频在线免费播放| 欧美日韩三级电影在线| 一区二区精品国产| 久久91麻豆精品一区| 国产精品国产一区二区| 欧美特黄不卡| 国产在线a不卡| 欧洲一级精品| 91av视频在线免费观看| 欧美hdxxx| 欧美成人精品一区二区| 日本免费在线观看| 国产一区二区三区18| 欧美午夜黄色| 国产视频在线观看一区二区| 日本高清视频网站| 亚洲国产日韩欧美在线99| www.欧美国产| 日p在线观看| 亚洲一区免费视频| 亚洲色图美腿丝袜| 伊人国产在线视频| 中文日韩欧美| 久久视频这里有精品| 欧美午夜不卡| 青青在线免费视频| 一区二区日韩欧美| 激情图片qvod| 亚洲一区 二区 三区| 亚洲小说欧美另类激情| 一区二区不卡| 日韩a级黄色片| 欧美三级乱码| 欧美一级免费播放| 在线亚洲成人| 久久精品免费一区二区| 久久中文字幕一区二区三区| a在线观看免费视频| 精彩视频一区二区三区| 久久精品亚洲天堂| 大桥未久av一区二区三区中文| 麻豆tv在线观看| 韩国女主播成人在线| 波多野结衣中文字幕在线播放| 国产黄色91视频| 成人在线视频免费播放| 91麻豆福利精品推荐| 日本xxxxxxxxx18| 国产精品丝袜在线| 日本老熟俱乐部h0930| 亚洲一区二区三区四区的| 久久露脸国语精品国产91| 欧美丝袜一区二区三区| 日韩av高清| 激情小视频在线| 一区二区三区日韩在线| 免费不卡视频| 欧美日本中文字幕| 国产精品高清网站| 9999热视频在线观看| 青青草精品毛片| 欧美aaaaaaaa| 国产精品免费看一区二区三区| 婷婷亚洲成人| 国产高清免费在线| 日韩视频三区| 怡红院亚洲色图| 成人动漫精品一区二区| 国内精品卡一卡二卡三| 亚洲男人的天堂av| 黄色在线视频网址| 777久久久精品| 天天摸天天碰天天爽天天弄| 日韩在线视频导航| sis001亚洲原创区| 国产精品视频在线观看| av成人综合| 天堂√在线观看一区二区| 激情欧美日韩| 亚洲精品20p| 91免费国产在线| 日韩精品一区二区亚洲av性色| 精品国产成人av| 国产人妻精品一区二区三| 日韩成人免费视频| 欧美18一19xxx性| 91超碰中文字幕久久精品| 欧美电影在线观看网站| 久久综合九色99| 黄色成人在线网址| 手机看片一级片| 久久久精品国产99久久精品芒果| 欧美久久久久久久久久久久| 欧美亚洲综合在线| 色哟哟中文字幕| 九色成人免费视频| 电影在线观看一区二区| 久久久久久国产精品mv| 国产精品第十页| 亚洲欧美一区二区三区不卡| 国产亚洲欧美中文| 天天操天天摸天天干| 欧美精品一区二| 成人影院在线看| 国产精品羞羞答答| 国产精品最新| 色偷偷av一区二区三区乱| 国产在线一在线二| 91精品国产91久久久久久吃药| 日韩欧美中文字幕在线视频| 亚洲午夜高清视频| 日韩不卡在线观看日韩不卡视频| 一区二区视频观看| 亚洲国产精品一区二区www| 国产精品欧美综合亚洲| 久久精品成人欧美大片| 国产精品麻豆成人av电影艾秋| 欧美激情论坛| 性娇小13――14欧美| 91玉足脚交白嫩脚丫| 午夜精品福利视频网站| 人人妻人人澡人人爽人人欧美一区| 欧美另类老女人| 66精品视频在线观看| 天天做天天躁天天躁| 福利91精品一区二区三区| 超碰在线国产97| 日韩欧美国产1| 黄色影院在线看| 国产无套精品一区二区| 国产日韩精品视频一区二区三区| 日韩无码精品一区二区| 婷婷六月综合网| 全网免费在线播放视频入口 | 1024日韩| 久久久成人精品视频| 天堂久久精品忘忧草| 日韩在线黄色| 日韩av在线免费看| 国产精品久久久免费观看| 国产精品调教视频| 色猫猫国产区一区二在线视频| 麻豆md0077饥渴少妇| 女人天堂亚洲aⅴ在线观看| 在线免费看污网站| 亚洲精品视频观看| 亚洲精品国偷拍自产在线观看蜜桃| 欧美激情视频网| 美女一区二区在线观看| 少妇人妻互换不带套| 国产精品国产三级国产a| av中文字幕观看| 性色av一区二区三区红粉影视| 在线日本制服中文欧美| 国模私拍视频在线观看| 亚洲狠狠丁香婷婷综合久久久| 视频污在线观看| 国产极品jizzhd欧美| 99久久久久国产精品| 国产a√精品区二区三区四区| 红桃视频成人在线观看| yiren22亚洲综合伊人22| 91免费的视频在线播放| 一本久久综合| 亚洲精品天堂网| 亚洲成人动漫在线播放| 国产亚洲一区二区手机在线观看 | 亚洲自拍与偷拍| 你懂的视频在线| 97超级碰碰| 天堂va蜜桃一区二区三区| 国产精品成人69xxx免费视频| 精品久久久久久无| 国产亚洲欧美日韩精品一区二区三区| 日韩视频 中文字幕| 久久久www成人免费无遮挡大片| a级片免费观看| 日韩暖暖在线视频| 亚洲午夜黄色| 制服丨自拍丨欧美丨动漫丨|