sinat_27171121
代码男神
采纳率50%
2020-09-09 11:37 阅读 133

For 循环中的局部变量为什么可以拿出来用?

5

查阅HexEditor插件的时候发现如下代码,括号内定义的局部变量为什么可以拿出来用?

    /* i 是局部变量 */
    for (UINT i = 0; i < length; i++)
    {
    }

    for (i = 1; i <= max; i++)

有时候又不可以,会报错,是怎样配置VS使得VS支持或不支持以上“特性”?

补充图片:c++设置

图片说明

/GS /analyze- /W4 /FAu /Zc:wchar_t /I"../../src" /I"../../src/HelpDlg" /I"../../src/MISC" /I"../../src/OptionDlg" /I"../../src/UserDlg" /I"../../../Common/Ccpp" /I"../../../NativeLang/src" /Od /Fd"Debug\vc142.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "HEXEDITOR_EXPORTS" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope- /RTC1 /Gd /Oy- /MDd /FC /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\HexEditor.pch" /diagnostics:column

link设置

图片说明

/OUT:"D:\Downloads\npp.7.8.9.bin\plugins\HexEditor/HexEditor.dll" /MANIFEST /NXCOMPAT /PDB:"Debug\HexEditor.pdb" /DYNAMICBASE "shlwapi.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /IMPLIB:"Debug\HexEditor.lib" /DEBUG /DLL /MACHINE:X86 /SAFESEH /INCREMENTAL /PGD:"Debug\HexEditor.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\HexEditor.dll.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2020-09-09 12:08

    不同的编译器不同。早期的编译器,会把UINT i放在全局作用域上。现在的编译器不会。
    在VC++ 6.0时代
    for (int i = ...)
    {
    ...
    }
    for (int i = ...)
    {
    ...
    }
    这代码是不能编译的,会说i重复定义。

    点赞 评论 复制链接分享

相关推荐