2012-01-28 4 views
-4

У меня возникла ошибка при попытке скомпилировать скрипт по адресу http://www.exploit-db.com/exploits/16/. Я использую Dev-C++, и он говорит мне так:Ошибка в процессе компиляции

((C:\...\Untitled1.cpp In function `void send_ping_overflow(SOCKET, DWORD, char*, short int)': 
|| 104 C:\...\Untitled1.cpp name lookup of `i' changed for new ISO `for' scoping 
|| 100 C:\...\Untitled1.cpp using obsolete binding at `i' )) 
+5

Я не всегда скомпилирую эксплойты, но когда я это делаю, я понятия не имею, что я делаю. –

ответ

3

for (int i, ...)

переменная i в настоящее время объявлен в конструкции с for цикла. Это на самом деле новая способность (относительно говоря!) На языке C - изначально переменные должны были быть объявлены в верхней части блока, в котором они были использованы.

Невероятно устаревший компилятор, который вы используете (см. the dev-c++ tag wiki page), дает вам предупреждение об этом, поскольку вы не кодируете стандарт C99 или более поздний. Обратите внимание, что «99» в C99 относится к 1999 году, или тринадцать лет назад. Вы должны писать на C90, который насчитывает приблизительно двадцать один год назад.

Предлагаю переключиться на более новую/лучшую IDE, такую ​​как Eclipse.

+1

+1 для «невероятно устаревшего компилятора, который вы используете» –

+0

На самом деле кажется, что проблема с OP связана с C++, а не с C. – lvella

+1

@ Ивелла. Вы правы, но мне очень понравилось насмешку. Реальная проблема заключается в том, что переменная объявляется в заголовке цикла 'for', а затем используется под телом цикла. – Borealid