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

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 閱讀(2222) 評論(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ù)  更多評論
  
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿

隨筆檔案

文章分類

文章檔案

收藏夾

常去的壇子

  • 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>
            黄色成人在线免费| 欧美国产精品劲爆| 国产欧美一区二区三区久久| 亚洲一区免费观看| 午夜免费在线观看精品视频| 国产视频一区在线观看一区免费| 先锋影音久久| 久久久久久一区二区三区| 又紧又大又爽精品一区二区| 欧美不卡在线| 欧美午夜精品伦理| 久久婷婷影院| 欧美日韩高清一区| 性久久久久久久久久久久| 欧美一区二区三区久久精品茉莉花| 伊人久久久大香线蕉综合直播| 最新中文字幕一区二区三区| 欧美午夜精品久久久久免费视| 久久久999成人| 欧美精品一区二区三区一线天视频 | 欧美亚洲一区二区三区| 久久不射2019中文字幕| 亚洲精品免费电影| 午夜精品短视频| 亚洲精品一品区二品区三品区| 亚洲免费观看高清完整版在线观看熊 | 亚洲亚洲精品在线观看 | 国产精品你懂的在线| 久久久亚洲高清| 欧美日韩精品免费观看视一区二区 | 欧美中文字幕视频| 欧美黄色小视频| 久久久水蜜桃av免费网站| 欧美另类视频| 欧美国产免费| 国产偷久久久精品专区| 99热免费精品| 亚洲欧洲日韩女同| 久久精品国产久精国产爱| 亚洲视频成人| 欧美激情中文字幕一区二区| 久久久久九九九| 国产精品国产三级欧美二区| 亚洲二区在线视频| 一区免费视频| 久久激情五月丁香伊人| 性欧美超级视频| 欧美三级在线| 亚洲乱码日产精品bd| 亚洲国产精品成人| 久久视频一区二区| 久久久久久久久久久成人| 国产精品欧美风情| av成人免费在线| 一区二区91| 欧美日韩三级| 亚洲美女中出| 亚洲婷婷综合久久一本伊一区| 欧美福利电影网| 亚洲国产精品成人精品| 亚洲第一搞黄网站| 久久婷婷久久一区二区三区| 久久美女性网| 亚洲二区在线观看| 久久综合色播五月| 欧美成人精品一区二区三区| 亚洲第一在线综合网站| 久久永久免费| 亚洲国产91| 99在线|亚洲一区二区| 欧美人与禽猛交乱配| 亚洲日本欧美| 亚洲综合精品四区| 国产欧美一区二区色老头| 香蕉成人伊视频在线观看| 久久精品视频免费观看| 伊人色综合久久天天五月婷| 美女视频黄免费的久久| 亚洲国产精品精华液网站| 一片黄亚洲嫩模| 国产精品自拍三区| 久久精选视频| 亚洲人成在线播放| 午夜精品一区二区三区在线| 国产日韩欧美精品一区| 久久久久久久久伊人| 亚洲国产裸拍裸体视频在线观看乱了中文| 91久久香蕉国产日韩欧美9色| 欧美女同视频| 欧美一区二区日韩| 亚洲国产一区二区a毛片| 亚洲自拍16p| 激情自拍一区| 欧美视频三区在线播放| 久久久国产精品一区二区三区| 欧美激情在线| 久久av一区二区三区亚洲| 亚洲电影免费在线观看| 亚洲国产精品va| 亚洲自啪免费| 欧美午夜久久久| 久久成人在线| 亚洲日韩欧美视频| 久久久亚洲国产美女国产盗摄| 亚洲区第一页| 国产啪精品视频| 欧美精品久久99久久在免费线| 亚洲砖区区免费| 亚洲福利视频专区| 小处雏高清一区二区三区| 亚洲国产婷婷香蕉久久久久久99| 国产精品久久中文| 免费影视亚洲| 久久se精品一区二区| 日韩一区二区免费高清| 免费在线观看日韩欧美| 欧美一区二区日韩| 亚洲毛片一区| 伊人成年综合电影网| 国产精品你懂的在线欣赏| 欧美精品一区二区三区在线播放 | 欧美日韩国产一区二区三区| 久久九九久精品国产免费直播| 在线午夜精品| 99v久久综合狠狠综合久久| 欧美福利专区| 免费欧美网站| 蜜臀av性久久久久蜜臀aⅴ| 欧美一级视频免费在线观看| 亚洲一区图片| 在线亚洲电影| 一本久久知道综合久久| 999亚洲国产精| 最新高清无码专区| 亚洲人成在线免费观看| 在线精品一区| 亚洲福利在线看| 亚洲成色www久久网站| 国语自产偷拍精品视频偷| 国际精品欧美精品| 国产亚洲欧美一区二区| 国产日韩精品一区二区浪潮av| 国产精品一区二区在线观看| 国产精品久久久久久久久免费樱桃| 欧美日韩不卡在线| 国产精品高潮呻吟久久av无限| 欧美日韩伊人| 国产精品欧美日韩一区二区| 国产精品劲爆视频| 国产午夜精品一区二区三区欧美| 国产伦精品一区二区三区免费迷| 国产精品在线看| 国产一区二区三区丝袜| 韩日精品中文字幕| 亚洲国产综合91精品麻豆| 亚洲日本中文字幕区| 夜夜精品视频| 亚洲一线二线三线久久久| 亚洲专区免费| 久久九九免费视频| 欧美高清在线| 亚洲欧洲精品一区| 亚洲视频网站在线观看| 午夜精品久久| 老司机免费视频一区二区| 欧美电影在线观看| 欧美婷婷六月丁香综合色| 国产精品夜夜嗨| 精品成人一区二区| 国产精品99久久99久久久二8| 亚洲欧美影音先锋| 久久午夜视频| 亚洲精品乱码久久久久久日本蜜臀 | 久久亚洲午夜电影| 欧美午夜视频在线观看| 国产在线日韩| 一区二区三区欧美| 久久九九精品99国产精品| 亚洲高清123| 亚洲欧美日韩一区在线| 男同欧美伦乱| 国产精品专区一| 亚洲精品国久久99热| 香蕉精品999视频一区二区| 欧美二区不卡| 亚洲欧美大片| 欧美激情综合色| 国模精品一区二区三区色天香 | 国产精品视频一| 亚洲激情视频在线| 欧美一区二区视频观看视频| 亚洲第一在线视频| 欧美中文在线观看| 欧美日韩国产一区精品一区| 在线欧美日韩| 久久精品动漫| 亚洲一级黄色| 欧美日韩一级片在线观看| 亚洲日本乱码在线观看| 久久久综合精品|