青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

visualfc

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  42 隨筆 :: 0 文章 :: 119 評論 :: 0 Trackbacks
原創 visualfc

介紹一個通用c++ typeid實現.

主要功能:
    通用的typeid實現,可以在VS60/VS2005以及mingw32下保證相同的類型名輸出.
    程序使用boost::type_traits來實現,沒有使用內置的typeid.不支持RTTI操作.

項目地址:
    http://code.google.com/p/typeid

程序例子:
  1.  vfc::type_id(100).name();    // output "int"
  2.  vfc::type_id_t<int>::name(); // output "int"
  3.  vfc::type_id_t<const int &>::name(); // output "int const &"

  4.  struct a 
  5.  {
  6.      const int * test(intconst char *);
  7.  };
  8.  VFC_MAKE_ID(a,0x2003);

  9.  vfc::type_id(&a::test).name(); //output  "int const * (a::*)(int,char const *)"
主要類介紹:
   template<typename T>  vfc::type_id_t<>  獲取類型的typeid名
   template<typename T>  vfc::type_id(const T & t) 獲取變量的類型的type_id_t類型.

主要函數:
   type_id(100).std_name() 輸出 std::string 類型的name
   type_id(100).name()     輸出 const char * 類型的name

定義類型:
   VFC_TYPE_ID(type,id) 實現類型的定義,type為類型,id為類型自定義數值標識
例: VFC_TYPE_ID(std::string,0x2001)


下面給出一個完整的例子:  

  1. #include "vfc_type.h"
  2. struct a
  3. {
  4.     const int * test(int,int)
  5.     {
  6.         return NULL;
  7.     }

  8.     void test1() const
  9.     {
  10.     }
  11.     const char * test2(intintvolatile
  12.     {
  13.         return NULL;
  14.     }
  15.     const int & test3(int *, const char *) const volatile
  16.     {
  17.         static int i = 100;
  18.         return i;
  19.     }
  20. };

  21. void test(const char *, int k)
  22. {
  23. };

  24. VFC_TYPE_ID(a,0x2000);



  25. int main(int argc, char* argv[])
  26. {
  27.     typedef void (*T1)(void);
  28.     typedef int (*T2)(void);
  29.     typedef int (*T3)(int,int,int,int,int,int,int,int,int);
  30.     typedef const char * (*T4)(int &,int *,char **,char &,const int &);

  31.     typedef int U1;
  32.     typedef int U2[5];
  33.     typedef const int & U3;
  34.     typedef char U4[5][6][7];

  35.     printf("T1 type %s\n",vfc::type_id_t<T1>::name());
  36.     printf("T2 type %s\n",vfc::type_id_t<T2>::name());
  37.     printf("T3 type %s\n",vfc::type_id_t<T3>::name());
  38.     printf("T4 type %s\n",vfc::type_id_t<T4>::name());

  39.     printf("U1 type %s\n",vfc::type_id_t<U1>::name());
  40.     printf("U2 type %s\n",vfc::type_id_t<U2>::name());
  41.     printf("U3 type %s\n",vfc::type_id_t<U3>::name());
  42.     printf("U4 type %s\n",vfc::type_id_t<U4>::name());

  43.     printf("\'d\' type %s\n",vfc::type_id('d').name());
  44.     printf("100 type %s\n",vfc::type_id(100).name());
  45.     printf("100.0 type %s\n",vfc::type_id(100.0).name());
  46.     printf("\"str\" type %s\n",vfc::type_id("str").name());

  47.     const char * str = "ok";
  48.     printf("const char * str type %s\n",vfc::type_id(str).name());

  49.     a * pa;
  50.     printf("a type %s\n",vfc::type_id_t<a>::name());
  51.     printf("pa type %s\n",vfc::type_id(pa).name());
  52.     printf("a::test type %s\n",vfc::type_id(&a::test).name());
  53.     printf("a::test type %s\n",vfc::type_id(&a::test1).name());
  54.     printf("a::test type %s\n",vfc::type_id(&a::test2).name());
  55.     printf("a::test type %s\n",vfc::type_id(&a::test3).name());
  56.     printf("test %s\n",vfc::type_id(&test).name());

  57.     return 0;
  58. }
在VS60,VS2005和mingw32下編譯得到相同輸出結果如下:
  1. T1 type void (*)()
  2. T2 type int (*)()
  3. T3 type int (*)(int,int,int,int,int,int,int,int,int)
  4. T4 type char const * (*)(int &,int *,char * *,char &,int const &)
  5. U1 type int
  6. U2 type int [5]
  7. U3 type int const &
  8. U4 type char [7] [6] [5]
  9. 'd' type char
  10. 100 type int
  11. 100.0 type double
  12. "str" type char [4]
  13. const char * str type char const *
  14. a type a
  15. pa type a *
  16. a::test type int const * (a::*)(int,int)
  17. a::test type void (a::*)()const
  18. a::test type char const * (a::*)(int,int)volatile
  19. a::test type int const & (a::*)(int *,char const *)const volatile
  20. test void (*)(char const *,int)
posted on 2008-11-03 22:22 visualfc 閱讀(2285) 評論(2)  編輯 收藏 引用 所屬分類: C++

評論

# re: 通用C++ typeid實現(不支持RTTI) 2008-11-04 00:06 踏雪赤兔
看了一下代碼,貌似不是線程安全的,呵呵~
繼續努力!  回復  更多評論
  

# re: 通用C++ typeid實現(不支持RTTI)[未登錄] 2008-11-04 07:58 visualfc
謝謝提醒.
看來為了線程安全, 可能得將type_id_t<T>::name()接口改為type_id_t<T>().name()了.  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            另类av一区二区| 亚洲精品一区二区三区樱花| 国产欧美一级| 亚洲香蕉网站| 一区二区日韩免费看| 欧美日韩日本网| 夜夜嗨av一区二区三区网页| 亚洲人成在线观看网站高清| 久久久久久自在自线| 永久久久久久| 亚洲国产日韩欧美一区二区三区| 欧美激情亚洲一区| 中文久久精品| 欧美一区二区三区免费视频| 国产精品美女午夜av| 久久国产黑丝| 久色婷婷小香蕉久久| 亚洲精品久久视频| av成人免费| 狠狠色综合色区| 91久久精品国产| 国产免费观看久久黄| 看片网站欧美日韩| 欧美激情视频在线免费观看 欧美视频免费一 | 一区二区三区四区精品| 一本一本a久久| 国产一区自拍视频| 蜜臀久久99精品久久久久久9| 蜜桃精品久久久久久久免费影院| 在线亚洲成人| 久久精品综合一区| 亚洲一区二区三区国产| 亚洲精品视频免费| 国产女主播在线一区二区| 欧美黄色片免费观看| 欧美午夜电影在线| 蜜桃久久精品一区二区| 欧美日韩八区| 久久本道综合色狠狠五月| 久久米奇亚洲| 性欧美精品高清| 欧美经典一区二区| 老司机67194精品线观看| 欧美激情影院| 久久婷婷国产综合精品青草| 欧美日韩在线亚洲一区蜜芽 | 狠狠色丁香婷婷综合久久片| 亚洲毛片在线看| 樱桃成人精品视频在线播放| 99国产精品自拍| 狠狠色丁香久久婷婷综合丁香 | 久久综合久久久| 国产精品麻豆成人av电影艾秋| 卡通动漫国产精品| 国产伦精品一区二区| 亚洲高清一二三区| 国内伊人久久久久久网站视频| 一区二区三区产品免费精品久久75| 黄色成人av在线| 欧美在线国产| 久久精品二区三区| 国产欧美在线观看| 亚洲欧美日韩国产一区| 亚洲女人小视频在线观看| 欧美日韩亚洲一区在线观看| 亚洲第一主播视频| 亚洲激情女人| 国产午夜精品麻豆| 亚洲视频在线观看| 欧美日韩免费网站| 日韩一区二区精品视频| 9l国产精品久久久久麻豆| 蜜乳av另类精品一区二区| 美女主播精品视频一二三四| 狠狠狠色丁香婷婷综合久久五月| 性欧美videos另类喷潮| 欧美在线视频日韩| 国产欧美1区2区3区| 午夜日韩福利| 免费观看在线综合| 在线观看日韩www视频免费| 久久久天天操| 你懂的国产精品永久在线| 激情综合亚洲| 免费日韩成人| 亚洲精品永久免费| 亚洲亚洲精品三区日韩精品在线视频 | 欧美视频日韩视频在线观看| 亚洲精品久久久久| 中文国产成人精品久久一| 欧美精品日韩| 亚洲午夜精品福利| 久久精品五月婷婷| 亚洲第一在线综合在线| 免费观看一区| 亚洲精品在线观| 久久国产黑丝| 99综合视频| 国产免费成人| 蜜桃av一区二区在线观看| 一本色道久久88亚洲综合88| 久久av一区二区三区亚洲| 亚洲电影视频在线| 国产精品都在这里| 午夜精品999| 欧美黄色免费| 亚洲一区二区三区影院| 国产欧美一区二区三区久久 | 欧美sm视频| 亚洲一区视频| 亚洲成人中文| 国产精品日日摸夜夜摸av| 欧美在线一级视频| 亚洲国产小视频在线观看| 欧美综合第一页| 亚洲伦理自拍| 激情成人中文字幕| 国产精品草草| 欧美激情中文字幕乱码免费| 午夜精品免费| 在线亚洲一区| 91久久在线观看| 久久嫩草精品久久久精品| 99精品视频免费观看视频| 国内精品视频久久| 欧美日韩一区三区四区| 久久全国免费视频| 午夜精品久久久久影视| 91久久综合亚洲鲁鲁五月天| 久久爱另类一区二区小说| 亚洲欧美福利一区二区| 亚洲人午夜精品| 一区二区亚洲精品| 国产亚洲欧美色| 国产欧美日韩精品a在线观看| 欧美精品成人| 麻豆精品传媒视频| 久久看片网站| 久久精品导航| 欧美中文日韩| 亚洲一区免费看| 亚洲啪啪91| 亚洲激情校园春色| 欧美韩国日本综合| 久久一区二区三区国产精品 | 一区二区在线视频| 欧美日韩精品一区二区三区| 欧美电影电视剧在线观看| 久久久亚洲影院你懂的| 欧美一区三区三区高中清蜜桃| 亚洲欧美精品伊人久久| 亚洲在线不卡| 欧美亚洲视频一区二区| 午夜视频在线观看一区二区三区| 亚洲一区尤物| 久久国产视频网| 久热国产精品视频| 美女国产一区| 久久综合九色综合欧美狠狠| 嫩草国产精品入口| 欧美精品一级| 国产精品乱人伦一区二区 | 欧美一区影院| 久久精品夜夜夜夜久久| 老色鬼久久亚洲一区二区| 久久久久在线| 欧美成人资源网| 欧美少妇一区二区| 国产麻豆综合| 国产亚洲精品福利| 亚洲第一中文字幕| av成人激情| 亚洲欧美日韩精品一区二区| 欧美一区国产二区| 欧美福利在线观看| 亚洲青涩在线| 西瓜成人精品人成网站| 久久久久国产一区二区| 美女久久网站| 另类人畜视频在线| 欧美电影免费| 国产乱人伦精品一区二区 | 国产精品久久久久久亚洲调教| 国产精品免费区二区三区观看| 国产精品日本| 91久久久在线| 亚洲一区久久久| 亚洲精品在线免费观看视频| 久久精品人人| 亚洲乱码国产乱码精品精| 亚洲欧美三级伦理| 欧美成人a视频| 国产精品毛片a∨一区二区三区|国| 国产区二精品视| 亚洲精品久久在线| 久久久精品日韩| 99视频热这里只有精品免费| 欧美一区精品| 国产精品日韩欧美一区二区三区| 亚洲福利国产|