Я инициализирую простую переменную int в моем коде, но она дает некоторые нежелательные ошибки... Если я использую переменную integer (или другой тип данных), в некоторых местах она дает ошибку. Я записываю свой код и помещаю комментарий, где целочисленная переменная показывает ошибку.
#include<stdio.h>
#include<Windows.h>
//int i; ///********* no problem ************
int main()
{
//int i; ///********* no problem ************
STARTUPINFO si;
PROCESS_INFORMATION pi;
//int i; ///********* no problem ************
ZeroMemory(&si,sizeof(si));
//int i; // error C2143: syntax error : missing ';' before 'type'
si.cb=sizeof(si);
//int i; //error C2143: syntax error : missing ';' before 'type'
ZeroMemory(&pi,sizeof(pi));
//int i; //error C2143: syntax error : missing ';' before 'type'
if(CreateProcess("C:\\Windows\\System32\\notepad.exe",NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi))
{
//int i; ///********* no problem ************
printf("process created\n pid is=%d tid is=%d\n",pi.dwProcessId,pi.dwThreadId);
}
else
{
//int i; ///********* no problem ************
printf("process creation error\n");
}
// int i; // error C2143: syntax error : missing ';' before 'type'
}
Я использую компилятор cl.exe и visual studio 2012. Я компилирую код из командной строки
cl process.c
Компилятор Visual Studio не поддерживает C99, который вы пытаетесь использовать.
Вы должны использовать только C90, т.е. Сохранять объявления переменных в верхней части своей области.
Вы должны объявить все свои переменные сразу после функции {
.
Это связано с тем, что Visual Studio поддерживает C89 и C89, запрещает смешанные объявления. В C99 и более поздних версиях переменные могут быть объявлены в любом месте