아래의 코드는 C 언어로 사용되지만, Visual Studio 2008에서는 C++ 프로그램으로 작성했으며 제대로 작동합니다 (C++로 저장 됨). 그러나,이 프로그램은 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);
}
C 또는 C++인지 확인하는 한 가지 방법은 페티센트 플래그가 설정된 C 또는 C++ 컴파일러로 컴파일하는 것입니다. 그러면 비표준 C 또는 C++ 컴파일을 허용하는 컴파일러 확장 또는 기타 컴파일러 불규칙성이 제거됩니다. – mydogisbox