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

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

升級VC7項目到VC8的注意事項(轉)

? ?

?

升級VC7項目到VC8的注意事項

在2005年年中的時候,公司就準備轉移到Visual Studio 2005上開發產品。本人有幸參與了升級的過程,成功的把30個左右solutions、幾百個projects升級到了VC8。由于項目眾多,并且項目還在持續開發中,我們的基本策略是讓代碼同時在VC7.1和VC8下面編譯通過,最后再完全轉到VC8,鏈接并運行成功。從總體上說VC8比VC7.1語法上嚴格且嚴謹。下面是我的一些經驗總結。文中只涉及到編譯問題,鏈接的問題沒有包含在內。我的同事Mr Han對此文有巨大貢獻,在此非常感謝。
1.?變量作用域
在vc7.1中, 如果一個變量定義在for語句的條件從句中,那么這個變量可以在for之后使用。但Vc8禁止這樣,會報告一個C2065錯誤.

for ?( int ?i? = ? 0 ;?i? < ? 10 ;? ++ i)??
{?????????????????????????????
???
// codes?here
}

if ?(i? < ? 10 )..? // error?in?Vc8
for ?(i? = ? 0 ;?i? < ? 5 ;? ++ i)? // error?in?Vc8

解決方法:
在for語句之前聲明變量(可保證代碼在vc7.1和vc8下同時編譯通過)

int ?i? = 0 ;????????????????????
for ?(i? = ? 0 ;?i? < ? 10 ;? ++ i)
for ?(i? = ? 0 ;?i? < ? 5 ;? ++ i)

2.?指針和引用的聲明
在Vc7.1中, 下面的代碼可以編譯, 但是vc8會報C4430 錯誤。(很難想象有些美國程序員竟然這樣聲明)

const ? & ? int ?a;? // error?in?VC8
const ? * ? int ?b;?? // error?in?VC8
int ?myfun?( const ? & ?B);? // error?in?VC8

解決方法:
把* 或&放到類型的后面.

const ? int & ?a;?
const ? int * ?b;
int ?myfun?( const ?B & );

3.?默認int類型
在vc7.1中,如果定義一個變量但不聲明類型,那么默認為int。VC8不支持。

static ?i? = ? 0 ;? // ?C4430?error?in?Vc8?
const ?i? = ? 0 ;? // C4430?error

解決方法:
加上int.

static ? int ?i? = ? 0 ;?
const ? int ?i? = ? 0 ;

4.?函數的默認返回值類型
同上,VC8不支持把 int 作為默認返回值類

Func()
{ return ? 0 ;} ;? // error?in?VC8

解決方法:
明確聲明函數返回值類型為 int.

int ?Func()
{ return ? 0 ;} ;

5.?函數地址
Vc7中函數名就是地址。在vc8中,必須要使用&操作符同時寫出這個方法的全名(fully qualified name).

class ?A
{
public :
?????
int ?Test( void );
}
;
void ?fun( int ?(A:: * test)?( void ));
int ?main()?
{
?????fun(A::Test);
// C3867?error?in?VC
????? return ? 0 ;
}

解決方法:
加上 &.

fun( & A::Test);

6.?隱式類型轉換
VC8不允許B* 到const B*&的隱式轉換.

class ?B {} ;
void ?fun?(? const ?B * ? & ?); // if?possible?use?const?B*?instead
int ?main()?
{
B?
* test? = ? new ?B();
fun?(test);?
// error?in?VC8
return ? 0 ;
}

解決方法:
強制轉換或函數參數變成const B*。

void ?fun?(? const ?B * ??);

7.?友元方法(Friend function)
VC8不允許聲明一個private或protected函數為友元.

class ?A
{
private :
?
void ?c();??
}
;
class ?B
{
??friend?
void ?A::c();? // C2248?error,?c()?is?invisible?to?class?B.
}
;

解決方法 1:
聲明友元類.

class ?A
{
private :
?
void ?c();??
}
;
class ?B
{
??friend?
class ?A;
}
;

解決方法 2:
把函數聲明為public

class ?A
{
public :
?
void ?c();??
}
;
class ?B
{
??friend?
void ?A::c();
}
;

8.?STL的stdext 命名空間
在vc8中,hash_map 和hash_set 被移進了stdext命名空間中.

#include? < hash_map >
std::hash_map?
// error?in?VC8

解決方法:
使用stdext 命名空間.

#include? < hash_map >
stdext::hash_map

9.?頭文件
許多頭文件如fstream.h 和iostream.h在VC8中已經不存在了.

#include? < fstream.h > ? // error?in?VC8

解決方法:
使用STL.

#include? < fstream >

10.?Iterator
一些 STL 類, iterators 不再用指針實現

std::vector < DMDetailRow > ?m_data;
std::vector
< DMDetailRow > ::iterator?iter? = ? & m_data[rowNum];

解決方法:

std::vector < DMDetailRow > ::iterator?Iter? = ?m_data.begin()? + ?rowNum;

11.?Enum
使用一個Enum的成員時,不要使用enum的名字

enum ?E
{
??a,b,c
}
;
E?e1?
= ?E::a;? // warning?in?VC8

解決方法:
去掉Enum 的名字.

E?e1? = ?a;

?


?



?
?

posted on 2006-07-24 08:47 夢在天涯 閱讀(992) 評論(0)  編輯 收藏 引用 所屬分類: CPlusPlusVS2005/2008

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812203
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              99天天综合性| 久久亚洲精品一区二区| 亚洲午夜性刺激影院| 国产精一区二区三区| 久久大逼视频| 亚洲美女在线视频| 亚洲欧美日韩天堂一区二区| 亚洲人午夜精品免费| 狠狠色丁香婷婷综合影院| 国产欧美日本一区二区三区| 国产精品啊啊啊| 欧美日韩在线影院| 欧美日韩一区二区三区在线看| 噜噜噜久久亚洲精品国产品小说| 久久久精品日韩| 久久国产精品72免费观看| 欧美在线视频一区二区| 久久久精品日韩| 久久xxxx| 亚洲欧美成人在线| 亚洲国产清纯| 亚洲第一中文字幕| 亚洲三级视频在线观看| 亚洲免费观看高清完整版在线观看| 亚洲欧洲一区二区三区在线观看 | 性欧美1819性猛交| 欧美一级视频| 久久精品视频免费播放| 久热精品在线视频| 欧美日韩a区| 国产精品九九| 欧美精品成人一区二区在线观看| 久久这里只精品最新地址| 免费h精品视频在线播放| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲欧美激情四射在线日| 亚洲精品日韩综合观看成人91 | 午夜在线一区二区| 久久久精品视频成人| 欧美大片一区| aa日韩免费精品视频一| 午夜精品久久久久久久久久久久久 | 伊人夜夜躁av伊人久久| 亚洲日本精品国产第一区| 一区二区三区高清| 新片速递亚洲合集欧美合集| 久久久亚洲精品一区二区三区 | 欧美日本中文字幕| 国产精品无人区| 国产一区二区日韩精品欧美精品 | 欧美激情影院| 国产亚洲在线观看| 亚洲欧洲日本mm| 午夜精品久久久久久久男人的天堂 | 在线观看91久久久久久| 亚洲人精品午夜| 久久人人97超碰国产公开结果 | 亚洲蜜桃精久久久久久久| 久久天天躁狠狠躁夜夜av| 国产精品电影观看| 亚洲日本成人| 美女久久一区| 亚洲综合日韩中文字幕v在线| 欧美日韩四区| 国产精品呻吟| 亚洲精品一区二区三区在线观看 | 欧美成在线视频| 国产在线不卡| 亚洲欧美日韩直播| 亚洲黄色性网站| 久久九九热免费视频| 男人的天堂亚洲| 黑人操亚洲美女惩罚| 亚洲欧美日韩中文在线制服| 亚洲精品美女91| 巨胸喷奶水www久久久免费动漫| 国产视频在线观看一区| 亚洲欧美成人在线| 日韩视频在线观看一区二区| 欧美不卡在线视频| 91久久精品一区二区三区| 久久亚洲二区| 欧美一区二区三区在线播放| 欧美护士18xxxxhd| 国产丝袜一区二区| 亚洲欧美另类国产| 一区二区日韩免费看| 欧美日韩综合一区| 一区二区三区产品免费精品久久75 | 美女视频一区免费观看| 先锋a资源在线看亚洲| 国产精品一区二区欧美| 午夜精品亚洲| 午夜日韩电影| 在线观看日产精品| 欧美bbbxxxxx| 欧美伊人影院| 亚洲特级毛片| 国产日韩欧美一区二区| 久久精品人人做人人综合| 性欧美videos另类喷潮| 国模一区二区三区| 久久久久成人网| 蜜桃av一区二区在线观看| 亚洲精品九九| 媚黑女一区二区| 一区二区三区日韩精品| 欧美日韩一区视频| 亚洲欧美综合一区| 久久激情网站| 亚洲日韩成人| 这里只有精品视频在线| 国产日韩欧美在线观看| 久久久精品免费视频| 两个人的视频www国产精品| 亚洲精品日韩激情在线电影| 一卡二卡3卡四卡高清精品视频| 欧美 日韩 国产在线| 狠狠久久婷婷| 亚洲精品九九| 国产一区二区在线观看免费| 亚洲高清不卡| 国产精品久久久久一区二区三区共 | 性欧美videos另类喷潮| 国产自产女人91一区在线观看| 欧美大秀在线观看| 欧美日韩伦理在线| 久久精品国产精品亚洲精品| 一本高清dvd不卡在线观看| 国产精品亚洲综合天堂夜夜| 欧美v日韩v国产v| 欧美午夜电影网| 开心色5月久久精品| 久久只精品国产| 欧美在线观看你懂的| 校园春色综合网| 欧美日韩免费高清一区色橹橹| 欧美在线网站| 欧美日韩国产一区二区三区地区| 久久精彩视频| 欧美日韩视频不卡| 免费一级欧美片在线观看| 国产精品扒开腿做爽爽爽视频 | 亚洲影院色在线观看免费| 久久综合国产精品| 欧美一级视频免费在线观看| 久久精品一区二区三区不卡| 91久久精品国产91久久性色tv| 国产欧美在线观看| 亚洲五月六月| 亚洲性色视频| 国产精品久久久久久久久久久久久| 亚洲精品在线观| 在线视频亚洲欧美| 国产麻豆日韩| 亚洲国产综合在线看不卡| 美女久久网站| 亚洲高清一二三区| 99视频一区二区| 欧美日韩国产成人在线免费 | 亚洲国产精品电影在线观看| 在线视频你懂得一区| 亚洲精品偷拍| 欧美视频中文一区二区三区在线观看| 亚洲国产精品成人| 亚洲免费成人av| 99视频精品全部免费在线| 亚洲日本理论电影| 亚洲视频精选| 欧美亚洲网站| 欧美性开放视频| 在线欧美福利| 亚洲一区二区在线免费观看视频| 国产夜色精品一区二区av| 欧美日韩在线播放三区| 欧美激情在线播放| 日韩视频免费观看高清在线视频| 欧美日韩精品高清| 亚洲欧美日韩网| 欧美激情综合| 亚洲少妇在线| 激情五月综合色婷婷一区二区| 欧美日本在线一区| 欧美一区二区三区四区在线| 亚洲精品美女在线观看| 久久成人av少妇免费| 日韩一二三在线视频播| 国产自产v一区二区三区c| 欧美日韩一区二区高清| 久久久综合免费视频| 亚洲午夜在线观看视频在线| 亚洲成人直播| 久久天堂成人| 亚洲欧美日韩精品一区二区| 亚洲精品一区二区三| 国产自产高清不卡| 国产精品一区二区男女羞羞无遮挡| 欧美精品日韩| 欧美成人免费在线视频| 久久夜色精品国产亚洲aⅴ|