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

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

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


<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>
            亚洲国产精品激情在线观看| 亚洲欧洲一区二区天堂久久| 99视频精品| 亚洲片在线观看| 欧美日韩一区二区三区免费看| 99视频一区二区| 在线视频中文亚洲| 国产主播精品| 亚洲黄页一区| 国产精品一区二区三区成人| 久久久久久久999| 欧美a级在线| 亚洲综合首页| 久久三级视频| 亚洲一级片在线观看| 午夜精品视频网站| 亚洲激情欧美激情| 亚洲欧美日韩在线高清直播| 红桃视频成人| 亚洲精品一区二区三区在线观看| 国产精品少妇自拍| 免费日韩视频| 国产精品免费看| 欧美777四色影视在线| 国产精品福利在线观看| 免费观看成人网| 国产精品美女www爽爽爽| 欧美h视频在线| 国产精品久久久久久影视| 欧美va天堂在线| 国产精品视频第一区| 亚洲黄页视频免费观看| 国产一区二区三区四区hd| 亚洲精品你懂的| 国产欧美一区二区三区国产幕精品 | 最新国产の精品合集bt伙计| 亚洲欧美在线一区二区| 一本久道久久综合婷婷鲸鱼| 久久精品成人一区二区三区| 亚洲自拍啪啪| 欧美日韩高清免费| 亚洲第一在线综合在线| 韩国女主播一区| 亚洲欧美日本在线| 亚洲一区二区动漫| 欧美激情国产日韩精品一区18| 久久成人久久爱| 国产精品久久久999| 亚洲精品在线观看免费| 亚洲人屁股眼子交8| 久久久xxx| 久久天天躁狠狠躁夜夜av| 国产精品你懂的| 亚洲网友自拍| 亚洲影院色无极综合| 欧美日韩在线大尺度| 亚洲精品视频二区| 一本色道久久88综合日韩精品 | 亚洲高清久久久| 亚洲黄页视频免费观看| 久久综合色8888| 欧美成人a视频| 亚洲人成欧美中文字幕| 欧美风情在线观看| 亚洲三级视频| 亚洲桃色在线一区| 国产精品成人在线| 亚洲欧美视频| 久久亚洲综合| 亚洲成人直播| 牛牛影视久久网| 亚洲精品乱码久久久久| 在线一区视频| 国产精品久久久久久久app| 亚洲一区二区高清| 久久久精品国产免费观看同学| 狠狠久久婷婷| 欧美第一黄色网| 亚洲毛片在线观看| 欧美一区二视频| 韩国av一区二区| 欧美激情第3页| 中国成人亚色综合网站| 久久久久久久久岛国免费| 亚洲国产精品久久久久婷婷884| 欧美激情综合五月色丁香小说| 99视频精品在线| 久久精品一区蜜桃臀影院| 亚洲国产精品激情在线观看| 欧美日韩亚洲视频| 欧美影片第一页| 亚洲激情社区| 久久精品99国产精品| 亚洲精品国精品久久99热| 国产精品久久9| 久久久久久69| 在线亚洲一区| 欧美电影免费观看高清| 亚洲一区综合| 亚洲高清色综合| 国产精品入口麻豆原神| 女人天堂亚洲aⅴ在线观看| 亚洲无亚洲人成网站77777| 美女网站久久| 亚洲欧美日韩区| 亚洲精品美女在线| 国产亚洲欧美一区二区三区| 欧美精品在线免费观看| 久久精品人人做人人爽电影蜜月| 日韩视频在线一区| 免费欧美网站| 欧美在线亚洲在线| 亚洲一区二区在线免费观看视频| 亚洲第一在线综合在线| 国产偷久久久精品专区| 欧美色图一区二区三区| 久久亚洲国产精品一区二区| 亚洲欧美视频一区| 一区二区三区高清视频在线观看| 欧美黄色一区二区| 久久久久久久久久久成人| 亚洲欧美一区二区三区极速播放| 亚洲日本在线观看| 亚洲国产黄色片| 狠狠入ady亚洲精品| 国产欧美一区二区三区在线老狼| 久久久久久网| 欧美亚洲一区二区在线| 一本久久a久久免费精品不卡| 在线成人激情黄色| 伊人久久大香线| 国模私拍视频一区| 国产最新精品精品你懂的| 国产女同一区二区| 国产精品视频精品| 国产精品夜夜夜| 国产精品亚洲综合天堂夜夜| 国产精品久久久久免费a∨大胸| 欧美日韩国产在线看| 欧美激情亚洲另类| 欧美日本国产精品| 欧美日韩精品综合| 欧美三级精品| 欧美亚一区二区| 国产精品日韩一区二区| 国产精品一区久久久久| 国产欧美日韩伦理| 国产亚洲制服色| 一区二区三区免费网站| 亚洲婷婷综合色高清在线| 亚洲一区国产| 欧美伊人久久大香线蕉综合69| 性做久久久久久免费观看欧美| 亚洲在线观看免费视频| 欧美中文日韩| 国产精品一区久久久| 国内精品伊人久久久久av影院| 国产一区欧美| 久久精品国产亚洲高清剧情介绍| 久久久久久**毛片大全| 亚洲国产另类久久久精品极度| 伊人久久综合97精品| 久久精品一区二区三区中文字幕| 美女精品在线观看| 亚洲激精日韩激精欧美精品| 99视频有精品| 欧美一区二区三区视频在线 | 亚洲盗摄视频| 夜夜嗨av色综合久久久综合网| 亚洲小少妇裸体bbw| 久久国产一区二区| 亚洲精品国产欧美| 国产精品专区h在线观看| 亚洲国产精品成人精品| 亚洲视频1区| 激情亚洲网站| 亚洲视频在线观看| 国产一区99| 欧美人妖在线观看| 国产亚洲制服色| 一本久久青青| 久久综合影视| 亚洲线精品一区二区三区八戒| 欧美一级黄色录像| 91久久国产精品91久久性色| 亚洲免费人成在线视频观看| 美玉足脚交一区二区三区图片| 亚洲一区二区精品在线观看| 久久一二三四| 99视频在线精品国自产拍免费观看| 欧美在线免费视频| 99天天综合性| 欧美成人自拍| 欧美一区二区三区视频免费播放| 欧美精品高清视频| 欧美一区二区三区男人的天堂| 欧美日韩1080p| 亚洲黄色成人网| 久久亚洲影院| 久久gogo国模裸体人体|