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

posts - 101,  comments - 57,  trackbacks - 0
http://www.codeguru.com/forum/showthread.php?t=431298

This problem arises when A 64-bit pointer was truncated to a 32-bit int or 32-bit long.

This warning is only issued when /Wp64 is used.

From MSDN

Quote:

Error Message
'variable' : pointer truncation from 'type' to 'type'

This warning detects 64-bit portability issues. For example, if code is compiled on a 64-bit platform, the value of a pointer (64 bits) will be truncated if it is assigned to an int (32 bits).


See /Wp64

Quote:

Detects 64-bit portability problems on types that are also marked with the __w64 keyword.
/Wp64

/Wp64 is off by default in the Visual C++ 32-bit compiler and on by default in the Visual C++ 64-bit compiler.

Variables of the following types are tested on a 32-bit operating system as if they were being used on a 64-bit operating system:
  • int
  • long
  • pointer
If you regularly compile your application with a 64-bit compiler, you may want to disable /Wp64 in your 32-bit compilations, as the 64-bit compiler will detect all issues. For more information about targeting a Windows 64-bit operating system, see 64-Bit Programming with Visual C++.

To set this compiler option in the Visual Studio development environment
  1. Open the project's Property Pages dialog box. For details, see How to: Open Project Property Pages.
  2. Click the C/C++ folder.
  3. Click the General property page.
  4. Modify the Detect 64-bit Portability Issues property.
To set this compiler option programmatically
  • use Detect64BitPortabilityProblems.

Also, Have a look Rules for Using Pointers.


Quote:
Rules for Using Pointers

Porting your code to compile for both 32- and 64-bit Microsoft® Windows® is straightforward. You need only follow a few simple rules about casting pointers, and use the new data types in your code. The rules for pointer manipulation are as follows.

  1. Do not cast pointers to int, long, ULONG, or DWORD. If you must cast a pointer to test some bits, set or clear bits, or otherwise manipulate its contents, use the UINT_PTR or INT_PTR type. These types are integral types that scale to the size of a pointer for both 32- and 64-bit Windows (for example, ULONG for 32-bit Windows and _int64 for 64-bit Windows). For example, assume you are porting the following code:



    ImageBase = (PVOID)((ULONG)ImageBase | 1);

    As a part of the porting process, you would change the code as follows:



    ImageBase = (PVOID)((ULONG_PTR)ImageBase | 1);

    Use UINT_PTR and INT_PTR where appropriate (and if you are uncertain whether they are required, there is no harm in using them just in case). Do not cast your pointers to the types ULONG, LONG, INT, UINT, or DWORD.



    Note that HANDLE is defined as a void*, so typecasting a HANDLE value to a ULONG value to test, set, or clear the low-order 2 bits is an error on 64-bit Windows.
  2. Use the PtrToLong or PtrToUlong function to truncate pointers. If you must truncate a pointer to a 32-bit value, use the PtrToLong or PtrToUlong function (defined in Basetsd.h). These functions disable the pointer truncation warning for the duration of the call.



    Use these functions carefully. After you convert a pointer variable using one of these functions, never use it as a pointer again. These functions truncate the upper 32 bits of an address, which are usually needed to access the memory originally referenced by pointer. Using these functions without careful consideration will result in fragile code.
  3. Be careful using OUT parameters. For example, suppose you have a function defined as follows:

    void func( OUT PULONG *PointerToUlong );

    Do not call this function as follows:


    ULONG ul;

    PULONG lp;

    func((PULONG *)&ul);

    lp = (PULONG)ul;

    Instead, use the following call:



    PULONG lp;

    func(&lp);

    Typecasting &ul to PULONG* prevents a compiler error, but the function will write a 64-bit pointer value into the memory at &ul. This code works on 32-bit Windows, but will cause data corruption on 64-bit Windows—and it will be subtle, hard-to-find corruption. The bottom line: Do not play tricks with the C code—straightforward and simple is better.
  4. Be careful with polymorphic interfaces. Do not create functions that accept DWORD parameters for polymorphic data. If the data can be a pointer or an integral value, use the UINT_PTR or PVOID type.



    For example, do not create a function that accepts an array of exception parameters typed as DWORD values. The array should be an array of DWORD_PTR values. Therefore, the array elements can hold addresses or 32-bit integral values. (The general rule is that if the original type is DWORD and it needs to be pointer width, convert it to a DWORD_PTR value. That is why there are corresponding pointer-precision types.) If you have code that uses DWORD, ULONG, or other 32-bit types in a polymorphic way (that is, you really want the parameter or structure member to hold an address), use UINT_PTR in place of the current type.
  5. Use the new window class functions. If you have window or class private data that contains pointers, your code will need to use the following new functions:
    • GetClassLongPtr
    • GetWindowLongPtr
    • SetClassLongPtr
    • SetWindowLongPtr
    These functions can be used on both 32- and 64-bit Windows, but they are required on 64-bit Windows. Prepare for the transition by using these functions now.

    Additionally, you must access pointers or handles in class private data using the new functions on 64-bit Windows. To aid you in finding these cases, the following indexes are not defined in Winuser.h during a 64-bit compile:

    • GWL_WNDPROC
    • GWL_HINSTANCE
    • GWL_HWDPARENT
    • GWL_USERDATA
    Instead, Winuser.h defines the following new indexes:

    • GWLP_WNDPROC
    • GWLP_HINSTANCE
    • GWLP_HWNDPARENT
    • GWLP_USERDATA
    • GWLP_ID
    For example, the following code does not compile:

    SetWindowLong(hWnd, GWL_WNDPROC, (LONG)MyWndProc);
    It should be changed as follows:

    SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)MyWndProc);
    When setting the cbWndExtra member of the WNDCLASS structure, be sure to reserve enough space for pointers. For example, if you are currently reserving sizeof(DWORD) bytes for a pointer value, reserve sizeof(DWORD_PTR) bytes.
  6. Access all window and class data using FIELD_OFFSET. It is common to access window data using hard-coded offsets. This technique is not portable to 64-bit Windows. To make your code portable, access your window and class data using the FIELD_OFFSET macro. Do not assume that the second pointer has an offset of 4.
  7. The LPARAM, WPARAM, and LRESULT types change size with the platform. When compiling 64-bit code, these types expand to 64 bits, because they typically hold pointers or integral types. Do not mix these values with DWORD, ULONG, UINT, INT, int, or long values. Examine how you use these types and ensure that you do not inadvertently truncate values.
posted on 2010-07-07 16:28 margin 閱讀(2237) 評論(2)  編輯 收藏 引用

FeedBack:
# re: vs2005把默認使用64編譯器,所以指針是64位的。
2010-07-08 12:51 | 陳梓瀚(vczh)
這只是compatible,用警告告訴你“如果換成64位就會有這些錯誤”而已。默認還是32的。  回復(fù)  更多評論
  
# re: vs2005把默認使用64編譯器,所以指針是64位的。
2010-07-14 11:12 | margin
@陳梓瀚(vczh)
多謝指出...  回復(fù)  更多評論
  

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

收藏夾

常去的壇子

  • CVC電腦病毒論壇
  • 很多人說我是AV,我告訴他們:別瞧不起人,我們也能創(chuàng)造價值
  • 安全焦點
  • 黑客聚集的地方,一般是好酒最多的地方...
  • 看雪論壇
  • 國內(nèi)最強的加密解密論壇,成醉其中經(jīng)常夜不歸宿
  • 驅(qū)動開發(fā)論壇
  • 厭倦了啤的朋友們,來我們來整點白的...痛痛快快的BSOD也好過隔鞋瘙癢!

我的朋友

  • Sen的blog
  • IDE方面資深的受害者...經(jīng)常為一個變量的定義找不著北的痛苦程序員(深表同情)
  • 老羅的blog
  • 良師益友,千年水牛,引擎猛男,分析怪獸,墨鏡酷哥,臺球高手....

搜索

  •  

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产日韩一区二区三区| 欧美日韩精品二区第二页| 久久国产毛片| 国产日韩精品一区观看| 夜夜精品视频| 亚洲黄色在线看| 米奇777超碰欧美日韩亚洲| 国产视频亚洲精品| 久久av二区| 欧美亚洲免费| 狠狠色狠狠色综合日日小说| 午夜天堂精品久久久久| 亚洲深夜福利视频| 国产精品成人va在线观看| 一区二区三区四区蜜桃| 一区二区日韩欧美| 国产精品久久久久久久免费软件 | 久久精品亚洲精品| 午夜一级在线看亚洲| 国产伦精品一区二区三区高清版 | 国产麻豆综合| 久久色在线观看| 久久综合色一综合色88| 亚洲伦理网站| 亚洲香蕉网站| 国产亚洲a∨片在线观看| 久久深夜福利| 欧美激情一区二区三区全黄| 一本久道久久综合中文字幕| 中文精品视频| 伊人伊人伊人久久| 亚洲区第一页| 国产欧美另类| 欧美国产日韩亚洲一区| 欧美日韩日日骚| 久久国产精品久久久久久久久久 | 亚洲欧美另类中文字幕| 久久成人资源| 韩国一区二区在线观看| 亚洲欧洲日产国产网站| 国产精品无码永久免费888| 狼人天天伊人久久| 欧美日韩国产在线播放网站| 久久久久久久久蜜桃| 欧美成人国产一区二区| 欧美一区二区三区婷婷月色| 久久亚洲综合| 欧美亚洲自偷自偷| 欧美h视频在线| 久久av红桃一区二区小说| 猫咪成人在线观看| 欧美主播一区二区三区| 欧美阿v一级看视频| 亚洲最快最全在线视频| 欧美亚洲一区二区在线| 亚洲国产综合在线| 日韩亚洲欧美一区二区三区| 国产精品久久久久一区二区三区共 | 亚洲国产成人久久综合一区| 欧美黑人多人双交| 亚洲欧美一区二区精品久久久| 亚洲一区久久久| 亚洲毛片视频| 久久免费偷拍视频| 欧美在线关看| 国产精品美女在线| 亚洲人人精品| 亚洲激情视频在线播放| 欧美影院精品一区| 亚洲影院一区| 欧美日韩国产综合久久| 欧美va天堂| 影音先锋亚洲视频| 欧美一区二区在线免费观看| 亚洲午夜在线| 欧美精品电影| 亚洲国产高清自拍| 亚洲国产另类 国产精品国产免费| 亚洲网友自拍| 亚洲欧美日韩天堂| 国产精品成人免费| 一区二区三区日韩精品| 99在线|亚洲一区二区| 欧美国产视频在线| 欧美高清一区二区| 亚洲国产精品综合| 欧美成年人视频网站| 免费观看国产成人| 亚洲国产91精品在线观看| 久久久综合网| 欧美激情精品久久久久久蜜臀| 在线看欧美视频| 裸体女人亚洲精品一区| 亚洲第一精品电影| 亚洲人成亚洲人成在线观看| 美女日韩在线中文字幕| 亚洲国产91色在线| 日韩午夜在线| 国产精品a级| 亚洲欧美日韩视频二区| 欧美在线免费观看视频| 黄色成人在线观看| 欧美成人一区二区三区片免费| 亚洲电影免费在线| 亚洲少妇自拍| 国产视频观看一区| 蜜桃av一区| 亚洲精品日韩久久| 性亚洲最疯狂xxxx高清| 国内精品视频在线播放| 免费亚洲一区| 亚洲天堂男人| 美女国产精品| aa级大片欧美| 欧美—级高清免费播放| 亚洲天堂网在线观看| 久久综合国产精品| 亚洲精品日韩激情在线电影| 欧美精品福利在线| 亚洲欧美国产精品va在线观看 | 国产精品系列在线| 久久久噜噜噜久久久| 一区二区久久久久| 美日韩精品视频| 亚洲一区二区三区影院| 黄色在线一区| 国产精品国产精品国产专区不蜜| 欧美在线免费一级片| 亚洲日韩欧美视频| 久久久亚洲午夜电影| 99国产精品国产精品毛片| 国内精品久久久久久久影视蜜臀| 欧美成人免费小视频| 欧美一区二区在线观看| 亚洲美女91| 性欧美video另类hd性玩具| 国产精品日韩欧美| 欧美成人午夜77777| 欧美亚洲一区二区在线观看| 美日韩丰满少妇在线观看| 亚洲欧美一区二区视频| 亚洲精品欧美| 亚洲国产成人在线视频| 国产手机视频一区二区| 欧美三级视频在线观看| 欧美丰满高潮xxxx喷水动漫| 一区二区三区偷拍| 亚洲级视频在线观看免费1级| 一区二区av在线| 亚洲黄色一区二区三区| 国产亚洲一二三区| 国产精品国产a| 久久精品99国产精品| 亚洲在线免费观看| 亚洲国产精品一区二区第四页av | 亚洲第一天堂av| 国产在线精品二区| 国产日韩在线看片| 国产视频欧美视频| 国产一区二区三区直播精品电影| 国产精品久久久久aaaa| 国产精品久久久久久久久搜平片| 欧美日韩在线不卡一区| 嫩模写真一区二区三区三州| 久久免费黄色| 亚洲夜晚福利在线观看| 亚洲精品欧美在线| 亚洲精品四区| 母乳一区在线观看| 欧美激情第1页| 久久久久久夜精品精品免费| 欧美一区二区三区成人| 欧美一级理论片| 久久久亚洲人| 欧美高清视频在线| 久久久噜噜噜久久中文字幕色伊伊| 欧美中文字幕在线播放| 久久裸体艺术| 亚洲国产精品久久精品怡红院| 欧美激情精品久久久久久久变态 | 亚洲国产免费看| 日韩一级裸体免费视频| 亚洲视频在线观看一区| 欧美一级日韩一级| 蜜桃久久av| 亚洲人成在线影院| 亚洲欧美国内爽妇网| 欧美在线免费播放| 女女同性精品视频| 欧美先锋影音| 精品成人乱色一区二区| 亚洲伦理在线免费看| 午夜精品福利一区二区三区av | 亚洲靠逼com| 久久国产婷婷国产香蕉| 亚洲精品美女免费| 久久综合一区二区| 国产日韩欧美在线看| av成人免费在线观看| 欧美成年视频|