Проблемы с include
От: Аноним  
Дата: 22.09.04 08:11
Оценка:
Есть файл stafx.h. Там прописаны все нужные мне includ-ы, в том числе и для STL. Но при компиляции вылетает для вектора вот такое сообщение:

error C2143: syntax error : missing ';' before '<'

Что не так я сделал ? Файл stdafx.h включен в cpp файл
Re: Проблемы с include
От: Ed.ward Россия  
Дата: 22.09.04 09:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть файл stafx.h. Там прописаны все нужные мне includ-ы, в том числе и для STL. Но при компиляции вылетает для вектора вот такое сообщение:


А>error C2143: syntax error : missing ';' before '<'


А>Что не так я сделал ? Файл stdafx.h включен в cpp файл



Попробую потелепатировать....

using namespace std; не сделал, а vector без указания namespace пишешь?

Ed.ward
Re: Проблемы с include
От: PM  
Дата: 22.09.04 09:01
Оценка:
Здраствуйте, , Вы писали:

> Есть файл 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 следующее:

#pragma once

#include <iostream>
#include <tchar.h>
#include <windows.h>

#include <string>
#include <vector>
#include <map>

using namespace std;

а в cpp файле просто vector<int> vec;
Re[3]: Проблемы с include
От: PM  
Дата: 22.09.04 10:46
Оценка:
Здраствуйте, , Вы писали:

[]
> В том-то и фишка, что у меня в 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 и его просто можно было подключить и юзать
Re[5]: Проблемы с include
От: PM  
Дата: 22.09.04 11:04
Оценка:
Здраствуйте, , Вы писали:

[]
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 директив в заголовочных файлах — порочная практика, из-за которой повышается вероятность конфликта имен

А может она работает только в том модуле трансляции, где прописана?
Re[7]: Проблемы с include
От: PM  
Дата: 22.09.04 11:38
Оценка:
Здраствуйте, , Вы писали:

PM>> Мысль вслух, по ходу дела.

PM>> Я думаю, использование using директив в заголовочных файлах — порочная
PM>> практика, из-за которой повышается вероятность конфликта имен

> А может она работает только в том модуле трансляции, где прописана?


Насколько я помню, using-директива действует в области видимости блока, или если это глобальная область — то да, в единице трансляции. При включении (прямом или косвенном) заголовочного файла в cpp-файлы, в каждом из последних будет действовать using-директива из заголовочного файла. В случае с прекомпилированным заголовочным файлом, тот включается во все cpp-файлы, следовательно, в каждой единице трансляции директива будет действовать.

Тестовый проект из 2-х cpp-файлов и прекомпилированного заголовочного компилируется и работает как и ожидалось
// stdafx.h
#include <vector>
using namespace std;
bool f();

// s1.cpp
#include "stdafx.h"

int main()
{
    vector<int> v;
    bool z = f();
    return 0;
}

// s2.cpp
#include "stdafx.h"

bool f()
{
    vector<double> v;
    return v.empty();
}
foobar2000 v0.8.3: Beth Gibbons & Rustin Man — Romance [Out Of Season]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.