我知道下面的代码曾经是 C,但是,我在 Visual Studio 2008 中将它作为 C++ 程序编写,它工作正常(它保存为 C++)。但是,程序是用 C 代码编写的,对吗?(或者是吗?)。
因此,当我尝试在 Visual Studio 中将其编译为 C 时(转到 -> 文件属性 -> c/c++ -> 高级 -> 编译为 -> 将其更改为“编译为 C 代码”)然后我得到了很多错误,其中主要的它不识别 LPSTR 类型。所以,我想我的问题是:它是 C 代码还是 C++ 代码,如果是 C,为什么当我将它更改为编译 C 代码时它不起作用?
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <strsafe.h>
#include <direct.h>
#include <string.h>
#include <conio.h>
int main(VOID)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
//allocate memory
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
//create child process
if (!CreateProcess(NULL,
L"C:\\Windows\\Notepad.exe",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi))
{
fprintf(stderr, "create process failed");
return -1;
}
//parent waits for child to complete
WaitForSingleObject(pi.hProcess, INFINITE);
printf("Child Complete");
//close handle
CloseHandle(pi.hProcess);
CloseHandle(pi.hthread);
}