Здравствуйте, Аноним, Вы писали:
А>Есть файл stafx.h. Там прописаны все нужные мне includ-ы, в том числе и для STL. Но при компиляции вылетает для вектора вот такое сообщение:
А>error C2143: syntax error : missing ';' before '<'
А>Что не так я сделал ? Файл stdafx.h включен в cpp файл
Попробую потелепатировать....
using namespace std; не сделал, а vector без указания namespace пишешь?
Здраствуйте, , Вы писали:
> Есть файл stafx.h. Там прописаны все нужные мне includ-ы, в том числе и > для STL. Но при компиляции вылетает для вектора вот такое сообщение:
> error C2143: syntax error : missing ';' before '<'
> Что не так я сделал ? Файл stdafx.h включен в cpp файл
Код в студию где возникает ошибка. А вообще похоже, что не указано пространство имен std
#include <vector>
std::vector<char> v;
foobar2000 v0.8.2: 10. Royksopp — 40 Years Back Come [Melody A.M]
Re[2]: Проблемы с include
От:
Аноним
Дата:
22.09.04 10:05
Оценка:
Здравствуйте, PM, Вы писали:
PM>Здраствуйте, , Вы писали:
>> Есть файл stafx.h. Там прописаны все нужные мне includ-ы, в том числе и >> для STL. Но при компиляции вылетает для вектора вот такое сообщение:
>> error C2143: syntax error : missing ';' before '<'
>> Что не так я сделал ? Файл stdafx.h включен в cpp файл PM>Код в студию где возникает ошибка. А вообще похоже, что не указано пространство имен std PM>
PM>#include <vector>
PM>std::vector<char> v;
PM>
В том-то и фишка, что у меня в stdafx.h следующее:
[] > В том-то и фишка, что у меня в stdafx.h следующее:
> #pragma once
> #include <iostream> > #include <tchar.h> > #include <windows.h>
> #include <string> > #include <vector> > #include <map>
> using namespace std;
> а в cpp файле просто vector<int> vec;
Тогда . В cpp-файле в первой строке стоит #include "stdafx.h" ?
foobar2000 v0.8.3: 06. Vincent Gallo — Laura [When (WARPCD87)]
Re[4]: Проблемы с include
От:
Аноним
Дата:
22.09.04 10:54
Оценка:
Здравствуйте, PM, Вы писали:
PM>Здраствуйте, , Вы писали:
PM>[] >> В том-то и фишка, что у меня в stdafx.h следующее:
>> #pragma once
>> #include <iostream> >> #include <tchar.h> >> #include <windows.h>
>> #include <string> >> #include <vector> >> #include <map>
>> using namespace std;
>> а в cpp файле просто vector<int> vec;
PM>Тогда . В cpp-файле в первой строке стоит #include "stdafx.h" ?
Да, проверял уже . Весь прикол в том, что если using namespace std; прописать в cpp файле, то все фурычит как надо. Но мне бы хотелось, чтобы using namespace std; стоял в stdafx.h и его просто можно было подключить и юзать
[] PM>> Тогда . В cpp-файле в первой строке стоит #include "stdafx.h" ?
> Да, проверял уже . Весь прикол в том, что если using namespace std; > прописать в cpp файле, то все фурычит как надо. Но мне бы хотелось, чтобы > using namespace std; стоял в stdafx.h и его просто можно было подключить > и юзать
Мысль вслух, по ходу дела.
Я думаю, использование using директив в заголовочных файлах — порочная практика, из-за которой повышается вероятность конфликта имен
foobar2000 v0.8.3: 10. Vincent Gallo — A Picture Of Her [When (WARPCD87)]
Re[6]: Проблемы с include
От:
Аноним
Дата:
22.09.04 11:18
Оценка:
Здравствуйте, PM, Вы писали:
PM>Здраствуйте, , Вы писали:
PM>[] PM>>> Тогда . В cpp-файле в первой строке стоит #include "stdafx.h" ?
>> Да, проверял уже . Весь прикол в том, что если using namespace std; >> прописать в cpp файле, то все фурычит как надо. Но мне бы хотелось, чтобы >> using namespace std; стоял в stdafx.h и его просто можно было подключить >> и юзать
PM>Мысль вслух, по ходу дела. PM>Я думаю, использование using директив в заголовочных файлах — порочная практика, из-за которой повышается вероятность конфликта имен
А может она работает только в том модуле трансляции, где прописана?
Здраствуйте, , Вы писали:
PM>> Мысль вслух, по ходу дела. PM>> Я думаю, использование using директив в заголовочных файлах — порочная PM>> практика, из-за которой повышается вероятность конфликта имен
> А может она работает только в том модуле трансляции, где прописана?
Насколько я помню, using-директива действует в области видимости блока, или если это глобальная область — то да, в единице трансляции. При включении (прямом или косвенном) заголовочного файла в cpp-файлы, в каждом из последних будет действовать using-директива из заголовочного файла. В случае с прекомпилированным заголовочным файлом, тот включается во все cpp-файлы, следовательно, в каждой единице трансляции директива будет действовать.
Тестовый проект из 2-х cpp-файлов и прекомпилированного заголовочного компилируется и работает как и ожидалось