LINUX.ORG.RU

gcc не понимает тип string


0

0

помогите разобраться в файле есть строки

#include <string.h>

main() {

string str; str=""; ...

при попытке компиляции gcc выдает что типа string он не знает можно конечно заменить string на char * но интересен сам факт может кто нить знает как режить проблемму

заранее спасибо


Ответ на: Re: gcc не понимает тип string от DKorolkov

gcc не понимает тип string

да точно типа string не существует так написано man string

тогда кто нить занет структуры стринг что бы ее определить

шутники однако "не существует" :)

rh9
() автор топика
Ответ на: gcc не понимает тип string от rh9

Re: gcc не понимает тип string

DKorolkov произнёс эти слова с сорказмом.
//======================================
#include <string.h> 
using namespace std;
main() { 

string str; str=""; ...

||

#include <string.h> 

main() { 

std::string str; str=""; ...

xavier
()
Ответ на: Re: gcc не понимает тип string от phoenix

gcc не понимает тип string

я не понял последнего сообщения это типа using namespace std;

rh9
() автор топика
Ответ на: re от rh9

Re: re

>gcc не понимает тип string

А g++ ?

kosmonavt
()
Ответ на: re от rh9

Re: re

$ cat str.cpp
#include <string>

using namespace std;
int main() {
    string str = "abc";
    return 1;
}

$ g++ str.cpp


и почему у меня всё работает

Reset ★★★★★
()

Re: gcc не понимает тип string

может быть имеет смысл спросить на какой языке пишет rh9?

anonymous
()

Re: gcc не понимает тип string

>gcc не понимает тип string

Зато g++ понимает. gcc - для Си, g++ - для С++

Selecter ★★★★
()
Ответ на: Re: re от Reset

Re: re

потому что руки не из жопы, как тут у некоторых

aton
()
Ответ на: re от rh9

Re: re

А ты не gcc а g++ дёргай - тогда сразу волшебным образом string появится.

anonymous
()
Ответ на: Re: re от anonymous

Re: re

//<main.cpp>
#include <string>
#include <iostream>
//using namespase std;
/*
Если раскоментировать using manespace std
 то не понадобится писать std перед каждым оператором
 из стндартной библиотеки.
*/
int main(int argc, char* argv[])
{
std::string qwe = "qwe\n";
	std::cout<<qwe;
return 0;
}
//------------------------------
#<Makifile>
CXX = g++
TARGET = qwe
objects = main.o
$(TARGET): $(objects)
	$(CXX) -o $(TARGET) $(objects)

main.o: main.cpp
	$(CXX) $(CXXFLAGS) -c main.cpp

.PHONY: clean
clean:
	rm $(TARGET) $(objects)
//=============================
Макфаил и сорс, только попробуй написать что это не работает!

xavier
()
Ответ на: Re: re от xavier

Re: re

1. Не оператором а именем
2. return 0 в main лишнее
3. Нахрена тебе компилить в объектник, можно сразу в бинарь

а так все верно

aton
()
Ответ на: Re: re от aton

Re: re

2anton.
<1. Не оператором а именем>
string - оператор определения типа.
cout - потоковый оператор вывода.
<2. return 0 в main лишнее>
Не лишнее, так как :
int main(int argc, char* argv[])
[не указывать return - можно, но не желательно]
<3. Нахрена тебе компилить в объектник, можно сразу в бинарь>
Знаите батенька, у меня впечатление что вы не компитентны в вопросе 
 макфаилов, и не только их.
2rh9 Удачи!
P.S.
Нет полезных слов, сиди, молчи, жуй какашку через тряпочку!

xavier
()
Ответ на: Re: re от xavier

Re:

ГЫ:-)

Если уж быть последовательным - cout никак не оператор, а стандартный поток вывода. Оператор же напр. <<

оператор опред типа - ето что то новое... а какой у него приоритет в таб. операций?:-) Да и string s; это не определение типа а объявление переменной типа string...

using разрешает доступ без доп. спецификации ко всему из пр-ва имен, вне зависмости от того оператор это, или класс, или что то там ище...

Собирать одномудульный тест маке-ом моно, но вообще то не нуно - баловство ИМНО...:-)

PS повежливее, ДА?!

AIv ★★★★★
()
Ответ на: Re: от AIv

Re:

using namespace ... разрешает, описался... моно писать usin std::cout; напр. Тоже работает не только для операторов;-)

AIv ★★★★★
()
Ответ на: Re: re от xavier

Re: re

> [не указывать return - можно, но не желательно]

смотря в каком языке. в С++ обязательно, в Си - нет, что-то функция вернет, а вот что неизвестно :)

Reset ★★★★★
()
Ответ на: Re: re от xavier

Re: re

2xavier:

> Не лишнее, так как :
> int main(int argc, char* argv[])
> [не указывать return - можно, но не желательно]

Не надо распространять заблуждения.
Стандарт C++ (в отличие от C) _допускает_ выход из main()
без exit() и return, причем эта ситуация явно описана:

If control reaches the end of main without encountering a return
statement, the effect is that of executing return 0.

Нет тут ничего нежелательного.

Onanim
()
Ответ на: Re: re от Onanim

Re: re

Я не сказал что нельзя, и не сказал что не_желательно для компилятора - ему пофиг. в int main(int argc, char* argv[]) стоит инт, поэтому <return 0 в main лишнее> мне кажецца безпочвенным. З.Ы.: К этому можно есчо и написание в коде коментариев приплести.

<Если уж быть последовательным - cout никак не оператор, а стандартный поток вывода.> Да накрутил немножко. <Нет полезных слов, сиди, молчи, жуй какашку через тряпочку! + PS повежливее, ДА?!> 2aton Погорячился, 3 дня не сплю. Извени если обидел.

xavier
()
Ответ на: Re: re от aton

Re: re

2aton
<3. Нахрена тебе компилить в объектник, можно сразу в бинарь>
А как?

xavier
()
Ответ на: Re: re от xavier

Re:

<3. Нахрена тебе компилить в объектник, можно сразу в бинарь> А как?

g++ test.cpp

По умолчанию создает a.out, если нуно другое имя есть опция -o :-)

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.