29.09.2010, 02:00
29.09.2010, 02:07
Смысл был ознакомиться с языком и работой со ссылками и указателями. Решил сделать алгоритм сортировки строк. Естественно, стандартная библиотека скорее всего содержит почти все привычные функции.
Добавлено:
Кое-что пока не ясно. Создал .h-файл без .cpp-аналога, подключил его, но компилятор в упор его не видит:
#include <GeneralUnit.h>
...
4 C:\Dev-Cpp\Examples\Hello\Hello.cpp GeneralUnit.h: No such file or directory.
Добавлено:
Кое-что пока не ясно. Создал .h-файл без .cpp-аналога, подключил его, но компилятор в упор его не видит:
#include <GeneralUnit.h>
...
4 C:\Dev-Cpp\Examples\Hello\Hello.cpp GeneralUnit.h: No such file or directory.
29.09.2010, 02:16
Тогда по мелочи еще пара вопросов.
1. Зачем менять указатели, если if (strcmp(Arr[LeftInd], MiddleItem) == 0), просто лень отделить было?
2. Зачем скобки в вызовах типа SortStrArr(&Arr[0], (RightInd + 1)); на всякий случай?
Добавлено:
#include "GeneralUnit.h"
1. Зачем менять указатели, если if (strcmp(Arr[LeftInd], MiddleItem) == 0), просто лень отделить было?
2. Зачем скобки в вызовах типа SortStrArr(&Arr[0], (RightInd + 1)); на всякий случай?
Добавлено:
(29.09.2010 02:07)Berserker Wrote: [ -> ]Кое-что пока не ясно. Создал .h-файл без .cpp-аналога, подключил его, но компилятор в упор его не видит:А если так:
#include <GeneralUnit.h>
...
#include "GeneralUnit.h"
29.09.2010, 02:20
Quote:1. Зачем менять указатели, если if (strcmp(Arr[LeftInd], MiddleItem) == 0), просто лень отделить было?Машинально при правке поставил. Первоначально было > 0.
Quote:2. Зачем скобки в вызовах типа SortStrArr(&Arr[0], (RightInd + 1)); на всякий случай?Логически выделил. Зрительно проще воспринимаю выражения так.
Хочу попробовать с классами поработать, написать аналог строк в Делфи со всякими умными фишками, но пока не понимаю, могут ли существовать заголовочные файлы без cpp-аналогов или пусть даже пустой плюсовый файл, но обязателен?
29.09.2010, 02:23
Ясный перец могут. Они вообще никак не связаны для компилятора. Плюсовый фай абсолютно не обязателен.
29.09.2010, 02:25
почитай про темплейты - очень полезно 

29.09.2010, 02:26
Не путай его. Пусть вначале просто с классами разберется. Шаблоны - это следующий шаг.
29.09.2010, 02:30
Quote:Ясный перец могут. Они вообще никак не связаны для компилятора. Плюсовый фай абсолютно не обязателен.Я так и думал, спасибо.
29.09.2010, 02:31
Ну попробовал?
29.09.2010, 02:40
Да. BloodShed Dev-C++ (включает в себя gcc с mingw) пишет, что без понятия, где файл. Добавил директорию проекта в список подключаемых. Нулевой эффект. Не принимает файл "GeneralUnit.h" хоть убей, а StringUnit.cpp нормально включается в проект.
Добавлено:
Добавлено:
Code:
Êîìïèëÿòîð: Default compiler
Building Makefile: "C:\Dev-Cpp\Examples\Hello\Makefile.win"
Âûïîëíåíèå make...
make.exe -f "C:\Dev-Cpp\Examples\Hello\Makefile.win" all
g++.exe -D__DEBUG__ -c Hello.cpp -o Hello.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -g3
Hello.cpp:4:25: GeneralUnit.h: No such file or directory
Hello.cpp:6: error: `pointer' does not name a type
Hello.cpp:8: error: variable or field `ExchangeStrs' declared void
Hello.cpp:8: error: `pchar' was not declared in this scope
Hello.cpp:8: error: `StrA' was not declared in this scope
Hello.cpp:8: error: `pchar' was not declared in this scope
Hello.cpp:8: error: `StrB' was not declared in this scope
Hello.cpp:9: error: initializer expression list treated as compound expression
Hello.cpp:9: error: expected `,' or `;' before '{' token
Hello.cpp:15: error: variable or field `SortStrArr' declared void
Hello.cpp:15: error: `pchar' was not declared in this scope
Hello.cpp:15: error: expected primary-expression before "int"
Hello.cpp:16: error: initializer expression list treated as compound expression
Hello.cpp:16: error: expected `,' or `;' before '{' token
Hello.cpp:50: error: `pchar' has not been declared
Hello.cpp:51: error: ISO C++ forbids declaration of `args' with no type
Hello.cpp: In function `int main(int, int*)':
Hello.cpp:53: error: `pchar' undeclared (first use this function)
Hello.cpp:53: error: (Each undeclared identifier is reported only once for each function it appears in.)
Hello.cpp:53: error: expected `;' before "strs"
Hello.cpp:54: error: `strs' undeclared (first use this function)
Hello.cpp:54: error: `SortStrArr' cannot be used as a function
make.exe: *** [Hello.o] Error 1
29.09.2010, 02:44
Ну попробуй включить с полным путем. Если заработает ищи настройки умолчательного пути к каталогу инклудов. Если нет - выброси свой dev-c++
Добавлено:
По правилам C++ при включении файла в "" он ищется в папке текущего проекта, а в <> ищется в каталоге стандартной библиотеки.
P.S. Ты бы лучше начало файла Hello.cpp поместил, а не полный лог.
P.S.S.
И какая из этих
-I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Dev-Cpp/include/c++/3.4.2/backward"
-I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"
-I"C:/Dev-Cpp/include/c++/3.4.2"
-I"C:/Dev-Cpp/include"
директория твоего проекта?
Добавлено:
По правилам C++ при включении файла в "" он ищется в папке текущего проекта, а в <> ищется в каталоге стандартной библиотеки.
P.S. Ты бы лучше начало файла Hello.cpp поместил, а не полный лог.
P.S.S.
И какая из этих
-I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Dev-Cpp/include/c++/3.4.2/backward"
-I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"
-I"C:/Dev-Cpp/include/c++/3.4.2"
-I"C:/Dev-Cpp/include"
директория твоего проекта?
29.09.2010, 02:51
Quote:По правилам C++ при включении файла в "" он ищется в папке текущего проекта, а в <> ищется в каталоге стандартной библиотеки.Сменил кавычки - ок.
29.09.2010, 13:20
MSVC компилер - не найдет разницы между
#include <GeneralUnit.h>
#include "GeneralUnit.h"
хотя стоит придерживаться классики
#include <GeneralUnit.h>
#include "GeneralUnit.h"
хотя стоит придерживаться классики
30.09.2010, 00:35
Вообще разница есть. Если совсем точно по стандарту, то "" вначале должен искаться в текущей папке и если не находится, то в системной, а <> наоборот в системной и если нет, то в текущей.
Поэтому кажется, что разницы нет. Но она есть. Создай в папке проекта stdio.h и посмотри какой файл будет включаться в <stdio.h> и "stdio.h". Сделано это, чтобы можно было в частности временно для проекта подменять стандартные библиотеки, не трогая оригинальные библиотечные файлы.
Кстати раньше MSVC не поддерживал стандарт полностью и искал только так как я написал раньше.
Поэтому кажется, что разницы нет. Но она есть. Создай в папке проекта stdio.h и посмотри какой файл будет включаться в <stdio.h> и "stdio.h". Сделано это, чтобы можно было в частности временно для проекта подменять стандартные библиотеки, не трогая оригинальные библиотечные файлы.
Кстати раньше MSVC не поддерживал стандарт полностью и искал только так как я написал раньше.
17.02.2011, 21:43
Тема вроде подходящая, хотел спросить:
Может кто подсказать хорошую обучалку по с++?
То бишь проверенную, надежную.
Буду благодарен.
Может кто подсказать хорошую обучалку по с++?
То бишь проверенную, надежную.
Буду благодарен.