ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 08.11.2007, 22:04
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Код:
if (argc < 2) // Проверка параметров
		usage(argv[0]);
	
	const char *SqlString = argv[1]; // сохраняем исходную строку в SqlString
	const int SqlStringLength = strlen(SqlString); // вычисляем длину переданной строки
	char *buffer; // будет хранить указатель на нашу память
в Си объявление переменных должно находиться до любого выполняемого кода.
 

  #12  
Старый 08.11.2007, 22:21
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме:
548128

Репутация: 104
По умолчанию

а что будет если после?:d
 

  #13  
Старый 08.11.2007, 22:28
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

__mad
А ты типа не знаешь? :-) В зависимости от компилятора. VS2005 гневно ругается, например, и отказывается компилировать.
 

  #14  
Старый 08.11.2007, 22:58
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме:
548128

Репутация: 104
По умолчанию

что то я отсал от жизни
я пользуюсь gcc , там всё норм)
а vc6 незамечал такого...)
 

  #15  
Старый 08.11.2007, 23:07
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Чего ты не замечал? Он про C говорит, а не про С++.
Ни один C-компилятор не допускает обьявлений после кода.
 

  #16  
Старый 08.11.2007, 23:12
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме:
548128

Репутация: 104
По умолчанию

ну так и я про C, а не про С++ в gcc без проблем компилится : D даж предупреждений нету...
зы gcc расшифровывается не C++ : D а GNU project C and C++ compiler
 

  #17  
Старый 08.11.2007, 23:13
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме:
165671

Репутация: 215
По умолчанию

Цитата:
Сообщение от KEZ  
Чего ты не замечал? Он про C говорит, а не про С++.
Ни один C-компилятор не допускает обьявлений после кода.
gcc это компилятор С. Он допускает, подтверждаю. КЕЗ, почему ты так категоричен?
 

  #18  
Старый 08.11.2007, 23:36
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

GCC значит это позволяет. Но по стандарту C все обьявления должны быть сделаны ДО первого оператора. Боюсь сейчас сильно напиздить. Во всяком случае, для C это стандарт _оформления_. Как найду ISO стандарты - отпишу. Меня шокировало если честно, что gcc это допускает.
 

  #19  
Старый 08.11.2007, 23:40
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
Провел на форуме:
165671

Репутация: 215
По умолчанию

КЕЗ, честно говоря я тоже всегда так думал (про стандарт). Но на форуме (по-моему васм.ру) недавно прочитал про то, что есть какие-то поправки, и, согласно новому стандарту, переменные можно объявлять в теле функции.
 

  #20  
Старый 09.11.2007, 03:32
L0rd_Ha0S
Участник форума
Регистрация: 25.01.2006
Сообщений: 158
Провел на форуме:
1000724

Репутация: 361
По умолчанию

Думал сюда никто не заходит, а тут вон сколько понаписали....
Цитата:
Сообщение от __mad  
тоже самое только чутка покороче)
только что - покороче
Цитата:
Сообщение от KEZ  
Цитата:
char *buffer;
//...
memset(buffer, 0, sizeof(buffer)); // заполняем нашу память нулями
Чел? А ты в курсе, что sizeof(char*) == 4. или 8 на 64-битных пл-х. но никак не количеству байт, которые ты передавал malloc'у.
o_O Да, как-то не задумывался над этим, спасибо. Поправлю сейчас.
Цитата:
Сообщение от KEZ  
Я просто не понимаю, если ты основ С не знаешь, то почему бы не писать на делфи?
Я ведь написал, что опыта у меня МАЛО! Основы в голову сразу не ложатся, понимание приходит со временем. Не будь таким критичным, на ошибках учатся. Теперь я буду делать одной ошибкой меньше. А на счёт делфи... Делфи под Линуксом... Как-то нет желания.
Цитата:
Сообщение от Forcer  
в Си объявление переменных должно находиться до любого выполняемого кода.
Это правило хорошего тона - объявлять все переменные вначале программы. Переменная может быть объявлена в любом месте программы до её непосредственного использования. У меня все переменные объявлены ДО их непосредственного использования. Я намерено их объявил после проверки параметров. Зачем мне их объявлять перед функцией usage()? Ни одна из этих переменных ей не используется. usage() завершит выполнение программы если нет параметров, если же они есть, выполнение продолжится. Только в случае, если параметры заданы имеет смысл объявлять эти переменные.

Кстати, gcc не позволяет делать объявления после кода.
Код:
#include <stdio.h>

int main(){

char* buffer = "Hello, World!\n";
printf("%s", buffer);

return 0;
}
Код:
haos@localhost(01:33:40)~/Projects/test $ gcc -o test test.c 
haos@localhost(01:35:42)~/Projects/test $ ./test 
Hello, World!
haos@localhost(01:35:44)~/Projects/test $
Код:
#include <stdio.h>

int main(){

printf("%s", buffer);
char* buffer = "Hello, World!\n";

return 0;
}
Код:
haos@localhost(01:36:50)~/Projects/test $ gcc -o test test.c 
test.c: In function ‘main’:
test.c:5: error: ‘buffer’ undeclared (first use in this function)
test.c:5: error: (Each undeclared identifier is reported only once
test.c:5: error: for each function it appears in.)
haos@localhost(01:37:07)~/Projects/test $

Последний раз редактировалось L0rd_Ha0S; 09.11.2007 в 03:38..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ