我知道下面的代碼曾經是C,但是,我把它寫在Visual Studio 2008中作爲一個C++程序,它工作正常(它保存爲C++)。但是,該程序是在C代碼中,對嗎? (或是否?)。因此,當我試圖在Visual Studio中將其編譯爲C(Go to> Properties of file - > c/C++ - > Advanced - > Compile as - >將其更改爲'Compile as C code')然後得到很多錯誤,其中主要不識別LPSTR類型。所以,我想我的問題是:是C或C++代碼,如果它是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);
}
確保它是C還是C++的一種方法是使用C或C++編譯器編輯迂腐標誌。這將消除任何編譯器擴展或其他編譯器違規行爲,這些行爲將允許非標準的C或C++編譯。 – mydogisbox 2012-04-07 12:15:01