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

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>
            亚洲视频图片小说| 亚洲免费av电影| 另类成人小视频在线| 亚洲性夜色噜噜噜7777| 亚洲一区二区黄| 新67194成人永久网站| 久久精品免费| 欧美电影免费观看| 欧美日韩精品系列| 国产老女人精品毛片久久| 国产欧美日韩亚洲精品| 国产一区二区三区视频在线观看| 国产综合视频在线观看| 亚洲黄网站在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲福利在线视频| 亚洲国产精品久久久久婷婷老年| 99re6这里只有精品视频在线观看| 亚洲桃花岛网站| 久久成人免费| 欧美日韩国产综合网 | 久久一区二区三区av| 欧美成人免费网站| 一本大道久久精品懂色aⅴ| 久久久久se| 欧美日韩亚洲综合| 亚洲欧洲另类| 激情伊人五月天久久综合| 欧美日韩中文字幕精品| 欧美高潮视频| 欧美日韩中文另类| 国产一区二区三区丝袜| 国产综合久久久久影院| 亚洲国产精品www| 极品少妇一区二区| 亚洲精品乱码| 狠狠色丁香婷婷综合久久片| 欧美日韩一区二区免费视频| 国产亚洲成精品久久| aa级大片欧美三级| 久久久久久欧美| 亚洲综合丁香| 欧美日韩精品一区二区在线播放| 国产自产高清不卡| 亚洲欧美国产高清va在线播| 亚洲国产欧美一区| 久久婷婷国产麻豆91天堂| 欧美激情在线狂野欧美精品| 亚洲一区久久久| 国产精品成人v| 亚洲激情欧美激情| 老司机一区二区| 小处雏高清一区二区三区| 国产精品激情| 亚洲尤物精选| 亚洲一区日韩在线| 国产精品毛片a∨一区二区三区| 99re6热只有精品免费观看| 欧美激情视频在线免费观看 欧美视频免费一| 午夜久久美女| 国产精品自在欧美一区| 亚洲欧美成人一区二区在线电影 | 欧美一区免费| 国产亚洲va综合人人澡精品| 欧美一级一区| 久久国产精品99国产| 狠狠做深爱婷婷久久综合一区 | 久热综合在线亚洲精品| 久久激情久久| 亚洲国产欧美不卡在线观看| 亚洲高清不卡在线观看| 欧美日本不卡| 午夜视频久久久| 欧美中文字幕不卡| 久久精品亚洲一区二区| 99视频精品免费观看| 欧美日韩高清在线观看| 亚洲影视在线播放| 亚洲综合欧美| 黄色成人av网| 亚洲欧洲一区二区天堂久久 | 久久人体大胆视频| 黑人中文字幕一区二区三区| 久久婷婷人人澡人人喊人人爽| 久久久91精品国产| 亚洲精选大片| 亚洲综合三区| 亚洲国产日韩欧美| 一本色道久久综合亚洲精品不| 国产精品亚洲一区二区三区在线| 久久在线观看视频| 欧美日韩天天操| 久久精彩免费视频| 欧美刺激午夜性久久久久久久| 亚洲视频精品在线| 久久成人免费| 中文亚洲欧美| 久久久久久9| 亚洲一区二区三| 欧美专区在线| 亚洲专区国产精品| 久久亚洲精品一区二区| 亚洲线精品一区二区三区八戒| 午夜视频一区| 亚洲免费观看在线观看| 性欧美精品高清| 亚洲深夜福利| 欧美激情综合色综合啪啪| 久久久午夜精品| 国产精品久久久久久久9999| 亚洲成在人线av| 国产综合色在线| 亚洲欧美成人一区二区三区| 亚洲国产影院| 久久在线91| 久久精品视频播放| 国产精品一卡二卡| 一区二区av| 亚洲深夜福利| 欧美激情一二区| 欧美黄色片免费观看| 国外视频精品毛片| 亚洲一区在线观看视频| 一区二区三区偷拍| 欧美精品三级在线观看| 欧美激情精品久久久六区热门| 国际精品欧美精品| 欧美一区国产在线| 久久激情五月婷婷| 国产日韩欧美在线播放| 亚洲一级电影| 亚洲欧美日韩精品在线| 欧美视频网址| 中国av一区| 欧美一级淫片aaaaaaa视频| 国产精品久久久久久久久搜平片| 亚洲国产日韩综合一区| 一区二区日韩精品| 亚洲精品在线观| 一区二区三区日韩精品| 亚洲精品日韩久久| 亚洲高清在线观看一区| 国产精品一区久久| 国内精品模特av私拍在线观看| 欧美精品一区视频| 欧美综合国产精品久久丁香| 蜜桃久久精品一区二区| 久久久久成人精品| 久久婷婷丁香| …久久精品99久久香蕉国产| 久久精品国亚洲| 欧美h视频在线| 亚洲国产成人精品久久久国产成人一区| 亚洲一区二区网站| 午夜一区在线| 国产一区清纯| 久久影院午夜片一区| 亚洲黄色片网站| 亚洲婷婷综合色高清在线| 国产精品久久久久久一区二区三区| 亚洲香蕉网站| 免费欧美高清视频| 亚洲精品久久久一区二区三区| 欧美日本韩国在线| 亚洲视频在线观看视频| 久久久夜色精品亚洲| 亚洲精品日韩激情在线电影| 欧美日韩大片| 亚洲综合视频在线| 欧美激情欧美激情在线五月| 99v久久综合狠狠综合久久| 国产精品豆花视频| 久久久久久网| 一本色道久久综合亚洲精品不| 久久国产精品久久精品国产| 亚洲激情视频网站| 国产精品一区二区在线| 美女尤物久久精品| 亚洲欧美成人| 亚洲激情国产| 久久免费高清| 亚洲桃色在线一区| 亚洲国产黄色| 国产日韩欧美不卡在线| 欧美伦理一区二区| 久久久亚洲精品一区二区三区 | 亚洲全黄一级网站| 国产欧美一区二区三区另类精品 | 亚洲精品一区二区三区不| 国产精品久久久久一区| 美女精品在线| 性视频1819p久久| 亚洲精品中文字幕在线| 久久人体大胆视频| 亚洲精品黄色| 欧美日韩岛国| 亚洲人被黑人高潮完整版| 欧美亚洲综合在线| 一本色道久久综合一区| 狠狠爱综合网|