相同的代码,但是新项目中的定义已适当更改?

时间:2019-10-19 00:27:07

标签: c++ visual-studio-2017

标识符PROCESSENTRY32<TlHelp32.h>中有一个定义,并且在我的旧程序中运行良好。但是,在我的新程序中,当它是typedef之前(绿色)时,它是一个宏(紫色)。我对MODULEENTRY32有同样的问题。这是相同的代码,但是在旧代码上,它的颜色是灰色,而我的新代码是紫色和蓝色。

我尝试删除一些定义代码,但这只会带来更多问题。

以下代码中的定义取自TIHelp32.h

typedef struct tagPROCESSENTRY32
{
    DWORD   dwSize;
    DWORD   cntUsage;
    DWORD   th32ProcessID;          // this process
    ULONG_PTR th32DefaultHeapID;
    DWORD   th32ModuleID;           // associated exe
    DWORD   cntThreads;
    DWORD   th32ParentProcessID;    // this process's parent process
    LONG    pcPriClassBase;         // Base priority of process's threads
    DWORD   dwFlags;
    CHAR    szExeFile[MAX_PATH];    // Path
} PROCESSENTRY32;                       /* *** Definition used by the old project *** */
typedef PROCESSENTRY32 *  PPROCESSENTRY32;
typedef PROCESSENTRY32 *  LPPROCESSENTRY32;

BOOL
WINAPI
Process32First(
    HANDLE hSnapshot,
    LPPROCESSENTRY32 lppe
    );

BOOL
WINAPI
Process32Next(
    HANDLE hSnapshot,
    LPPROCESSENTRY32 lppe
    );

#ifdef UNICODE
#define Process32First Process43FirstW
#define Process32Next Process32NextW
#define PROCESSENTRY32 PROCESSENTRY32W  /* ** Definition used by the new project ** */
#define PPROCESSENTRET32 PPROCESSENTRY32W
#define LPPROCESSENTRET32 LPPROCESSENTRY32W
#endif  // !UNICODE

要查看突出显示的颜色:old codenew code

当我的代码中使用标识符(PROCESSENTRY32MODULEENTRY32时,用于定义的颜色仍然存在。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我比较了两个项目的属性,并在新项目中发现了这一点。将“字符集”设置为“使用Unicode字符集”。然后将其设置为“使用多字节字符集”。 Here是我所改变的。