私は以下のコードがCであったことを知っていますが、Visual Studio 2008でC++プログラムとして書いてあり、うまくいきます(C++として保存されています)。しかし、プログラムはCコードで、正しいですか? (またはそれは?)。コードCまたはC++はありますか?
私はVisual Studio内でコンパイルしようとしたときに(ファイルのプロパティ - > 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++であるかどうかを確かめる方法の1つは、ペタンティックフラグをオンにしてCまたはC++コンパイラでコンパイルすることです。これにより、非標準のCまたはC++をコンパイルできるようにするコンパイラの拡張やその他のコンパイラの不規則性が排除されます。 – mydogisbox