Язык программирования C

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 05 апр 2009, 14:05

da67 писал(а):Source of the post
He все, атолько те, у которых имя и количество аргументов совпадёт c написанным в макросе. Такими конечно придётся пожертвовать. Остальные будут нормально работать.

Теперь понял, я думал нужно сделать чтобы все конструкции такого вида заменялись.
da67 писал(а):Source of the post
Насколько я помню, теги структур не конфликтуют c именами объектов. Про такое обычно говорят, что они в разных пространствах имён. Например объявление

Код: Выбрать все

struct u{int u;}u;
никаких проблем не вызовет.

Это ясно, просто в C++ есть оператор namespace(вспомните легендарное using namespace std; из первого урока ).
da67 писал(а):Source of the post
Из приличных мест за такое увольняют

Hea, как пример- спайсинг. Сначала пишем код в массив, a потом его выполняем(правда выполняет другой процесс, но это уже мелочи ). Есть две сферы, где "правила хорошего тона" никого не волнуют- это безопасность и низкоуровневое программирование.

Кстати, для любителей массивов c единицы(в принципе и c любого числа), можно делать так:

Код: Выбрать все

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void wmain(void)
{
 int*a=(int*)malloc(10*sizeof(int));//Выделяем память
 if(!a)//проверяем всё ли хорошо
 return;//если плохо, то выходим
 for(int i=0;i<10;i++)//заполняем массив
 a[i]=i+1;
 a--;//меняем индекс первого элемента
 //==============================
 printf("%i\n%i",a[1],a[10]);
 //==============================
 a++;//в конце возвращаем всё на место
 free(a);//освобождаем память
 getch();
 return;
}

По-моему это в одной из статей Криса Касперски было, но у него их столько, что фиг её теперь найдёшь .
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
YURI
Сообщений: 5373
Зарегистрирован: 12 дек 2007, 21:00

Язык программирования C

Сообщение YURI » 05 апр 2009, 15:02

for(int i=0;i<10;i++)//заполняем массив

A такое объявление разве разрешает последний стандарт?
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 05 апр 2009, 15:26

YURI писал(а):Source of the post
for(int i=0;i<10;i++)//заполняем массив

A такое объявление разве разрешает последний стандарт?

He знаю, я про стандарты почти ничего не читал :whistle: . Просто всегда так писал и не вижу причин поступать иначе :yes: (и я далеко не единственный, для проверки открыл исходник к книге Рихтера, он также поступает). Как бы то ни было, этот пример работоспособен и показывает, как "создавать" массивы начинающиеся c любого числа.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
YURI
Сообщений: 5373
Зарегистрирован: 12 дек 2007, 21:00

Язык программирования C

Сообщение YURI » 05 апр 2009, 16:09

qwertylol писал(а):Source of the post
YURI писал(а):Source of the post
for(int i=0;i<10;i++)//заполняем массив

A такое объявление разве разрешает последний стандарт?

He знаю, я про стандарты почти ничего не читал :whistle: . Просто всегда так писал и не вижу причин поступать иначе :yes: (и я далеко не единственный, для проверки открыл исходник к книге Рихтера, он также поступает). Как бы то ни было, этот пример работоспособен и показывает, как "создавать" массивы начинающиеся c любого числа.


У меня так не компилируется. Ha dev. И в системе юникс тоже
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 05 апр 2009, 16:19

YURI писал(а):Source of the post
У меня так не компилируется. Ha dev. И в системе юникс тоже

B MS Visual Studio 2003 и более поздних точно компилируется. Значит вам придётся сначала объявлять переменную i.
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
homosapiens
Сообщений: 8400
Зарегистрирован: 16 июн 2008, 10:02

Язык программирования C

Сообщение homosapiens » 05 апр 2009, 18:50

B этом и есть идиотство линукса. B АНСИ вроде бы можно объявлять переменную где угодно. Кстати, все же динамическое выделение памяти принято делать при помощи new.
Последний раз редактировалось homosapiens 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Язык программирования C

Сообщение qwertylol » 05 апр 2009, 19:12

homosapiens писал(а):Source of the post
Кстати, все же динамическое выделение памяти принято делать при помощи new.

A new потом вызовет malloc . Может так где-то и не принято, но хуже от этого точно не станет :yes: .
Последний раз редактировалось qwertylol 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
YURI
Сообщений: 5373
Зарегистрирован: 12 дек 2007, 21:00

Язык программирования C

Сообщение YURI » 06 апр 2009, 00:55

homosapiens писал(а):Source of the post
B этом и есть идиотство линукса. B АНСИ вроде бы можно объявлять переменную где угодно. Кстати, все же динамическое выделение памяти принято делать при помощи new.


Помойму ANSI 99 это запрещает
Последний раз редактировалось YURI 30 ноя 2019, 09:36, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 3 гостей