Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Литература
 
 автор: Miha_drinking_bout   (13.02.2010 в 07:06)   письмо автору
 
 

Несколько дней назад начал изучать С. В институте используют Dev-Cpp т.к.бесплатна.
А мне нравится потому что проста в использовании и примеры компилируются без переделок.
Подскажите какая литература на русском языке лучше для начала изучения С++.
Читаю сейчас Кернинган-Ричи но много там не объясняется с каждой прочитанной страницей возникает лишь больше вопросов.
Обучаюсь на физико математическом, поэтому много соответствующих задачь на С++ задают.
Вопросик еще назрел. В программе много повторяющегося кода как единожды написав его постоянно к нему обращаться?

  Ответить  
 
 автор: cheops   (13.02.2010 в 13:34)   письмо автору
 
   для: Miha_drinking_bout   (13.02.2010 в 07:06)
 

Возможно вас заинтересует тема по ссылке http://www.softtime.ru/cpp/read.php?id_forum=2&id_theme=261.

  Ответить  
 
 автор: heed   (16.02.2010 в 23:01)
 
   для: Miha_drinking_bout   (13.02.2010 в 07:06)
 

>примеры компилируются без переделок
это смотря какие примеры :) мне показалось что иногда слишком придирчиво проверяются типы переменных и параметров, и не нашёл как это отключается. после каких-нибудь msvc-компиляторов приходится частенько приведение типов добавлять.

>много повторяющегося кода

просто оформляют такой код в виде функций
, но чтобы в исполняемом файле было так-же много повторений кода, вроде должны делаться inline функции
, в gcc вроде-бы неплохо это дело поддержикается

5.36 An Inline Function is As Fast As a Macro
By declaring a function inline, you can direct GCC to make calls to that function faster. One way GCC can achieve this is to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead; in addition, if any of the actual argument values are constant, their known values may permit simplifications at compile time so that not all of the inline function's code needs to be included. The effect on code size is less predictable; object code may be larger or smaller with function inlining, depending on the particular case. You can also direct GCC to try to integrate all “simple enough” functions into their callers with the option -finline-functions.

GCC implements three different semantics of declaring a function inline. One is available with -std=gnu89 or -fgnu89-inline or when gnu_inline attribute is present on all inline declarations, another when -std=c99 or -std=gnu99 (without -fgnu89-inline), and the third is used when compiling C++.

To declare a function inline, use the inline keyword in its declaration, like this:
static inline int
inc (int *a)
{
(*a)++;
}
If you are writing a header file to be included in ISO C89 programs, write __inline__ instead of inline. See Alternate Keywords.


только там дальше ещё с какими-то моментами типа
GCC does not inline any functions when not optimizing unless you specify the `always_inline' attribute for the function, like this:
/* Prototype. */
inline void foo (const char) __attribute__((always_inline));


но можно просто макросы делать , типа

3.6 Variadic Macros
A macro can be declared to accept a variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example:

#define eprintf(...) fprintf (stderr, __VA_ARGS__)

This kind of macro is called variadic. When the macro is invoked, all the tokens in its argument list after the last named argument (this macro has none), including any commas, become the variable argument. This sequence of tokens replaces the identifier __VA_ARGS__ in the macro body wherever it appears. Thus, we have this expansion:

eprintf ("%s:%d: ", input_file, lineno)
==> fprintf (stderr, "%s:%d: ", input_file, lineno)


или


Here is an example of a macro definition that uses stringification:
#define WARN_IF(EXP) \
do { if (EXP) \
fprintf (stderr, "Warning: " #EXP "\n"); } \
while (0)


WARN_IF (x == 0); ==> do { if (x == 0)
fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0);

  Ответить  
 
 автор: Miha_drinking_bout   (25.03.2010 в 01:17)   письмо автору
 
   для: heed   (16.02.2010 в 23:01)
 

спасибо всем. Литература действительно дельная но приходится довольствоваться в электронном виде. Читаю, иногда даже понятно прочитанное. Еще интересно то что ответы находятся в самых неожиданных местах - хотя ASM мы не изучаем но много задач теоретических (информатика) было решено после пролистывания книги Юрова ASSEMBLER учебник для вузов. Понял что ничто лучше не объяснит про системы счисления, байт коды и многое другое - чем ассемблер. прикольное открытие для меня. Через год по учебному плану изучаем яву - я С то не могу осилить.

  Ответить  
 
 автор: Miha_drinking_bout   (06.11.2010 в 16:32)   письмо автору
6.1 Мб
 
   для: Miha_drinking_bout   (25.03.2010 в 01:17)
 

нашел интересную книгу по GCC. Вдруг кому то пригодится? В бумажном экземпляре у нас в городе ее достать практически нереально, поэтому нашел ссылку.
GCC. Полное руководство.
Автор: Артур Гриффитс.
Издательство: DiaSoft
http://depositfiles.com/ru/files/3706023

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования