HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

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

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

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

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

Должен признать, я был не прав. Смотрим: http://ru.wikipedia.org/wiki/Си_(язык_программирования) . Читаем про С99.
Цитата:
отсутствие ограничений на объявление локальных переменных (как и в С++);
Цитата:
несколько новых библиотечных функций, таких как snprintf;
Цитата:
Интерес к поддержке новых особенностей С99 в настоящее время смешан. В то время как GCC и некоторые другие компиляторы в настоящее время поддерживают большую часть новых особенностей С99, компиляторы компаний Borland и Microsoft не делают этого, причём похоже, что две эти компании и не думают их добавлять.
Вообщем вот. Соответственно VS2005, которой я пользуюсь, ничего из этого и не поддерживает. Будем надеяться что в 2008-й внесены изменения :-)

Последний раз редактировалось Forcer; 09.11.2007 в 12:20..
 
Ответить с цитированием

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

Репутация: 2726


По умолчанию

Цитата:
#include <stdio.h>

int main(){

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

return 0;
}
мда, ну что ещё сказать. но все-таки скажу. речь идет об объявлении переменных
до ПЕРВОГО ЛЮБОГО выполненого оператора, а не объявлении переменных до оператора, их ИСПОЛЬЗУЮЩЕГО. второй случай - вообще некорректен вообще для всех языков.

Цитата:
Это правило хорошего тона - объявлять все переменные вначале программы. Переменная может быть объявлена в любом месте программы до её непосредственного использования.
Это обязательное правило С, во всяком случае его первого стандарта. Только не программы, а ф-ии. А в любом месте она может быть объявлена в С++.
У каждого правила "хорошего тона" есть объяснение, почему оно хорошее, а другое не хорошее. Какое объяснение у этого "правила" ? Я не вижу ничего удобного или эффективного в том, что бы нелогично намешать все обьявления в начале, особенно, если у тебя сотни переменных, а после этого будет стоять сразу же if (!param) return;.

и ещё, советую юзать g++ а не gcc

Forcer, а ты используй MinGW
 
Ответить с цитированием

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

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

Цитата:
Сообщение от KEZ  
и ещё, советую юзать g++, а не gcc
Можно узнать - почему именно g++? Чем он лучше gcc?
 
Ответить с цитированием

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

Репутация: 2726


По умолчанию

Потому что на некоторых системах (наверное старые версии) gcc не понимает .cpp и компилирует их как .c - код.
Поэтому проще сразу g++ использовать, что бы не было проблем.
 
Ответить с цитированием

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

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

gcc по умолчанию не подключает стандартную библиотеку C++.
Во всяком случае старые версии. Так попробуй:
Код:
gcc -o test test.cpp -lstdc++
кстати, у gcc получается меньший размер бинарника.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ