Я работаю под Visual Studio 2008, может быть, это важно.В более крупном проекте я решил разделить один из моих файлов .cpp на два.Когда я переместил некоторые функции в новый файл, назовем его new.cpp
и попытался скомпилировать, я получил ошибки, из-за которых new.cpp
не знает определения fstreams
, setw()
и т. Д. Теперь, вв самом верху нового файла я включил свой собственный заголовок, назовем его main_header.h
, который, в свою очередь, включает в себя все необходимые <iostream>
, <iomanip>
и т. д. Это прекрасно работает во всех старых файлах, используемых в этом проекте,но по какой-то причине не в new.cpp
.
Если я добавлю
#include <fstream>
#include <iomanip>
// and all the rest
в new.cpp
, тогда все будет работать нормально, но я не решаю эту проблему.Я подумал, что, возможно, содержимое main_header.h
не добавляется к new.cpp
при компиляции, но это не так, я попытался использовать в new.cpp
внешнюю переменную, объявленную в main_header.h
и определенную в еще одном .cpp, и получилнет ошибок при компиляции, компоновке или запуске.Тем не менее, кажется, что <fstream>
и <iomanip>
, включенные в main_header.h
, не превращаются в файл new.cpp
.
Я относительно новичок в Visual Studio, поэтому решение моей проблемы, вероятно, является чем-то глупым, о котором я не знаю, но я потратил много времени, пытаясь выяснить это, но безрезультатно.Новый файл определенно является частью проекта, так как сборка проектов пытается его скомпилировать, плюс, когда я включу iostream
и iomanip
в это new.cpp
, я могу вызывать его подпрограммы в других частях проекта.Есть идеи, что я могу делать не так?
main_header.h
выглядит так
#ifndef MAIN_HEADER
#define MAIN_HEADER
#include <iomanip>
#include <fstream>
// loads of other stuff
#endif // for MAIN_HEADER
Обновление: ОК, так что на следующий день после того, как я создал целый новый проектиспользуя те же файлы, и теперь все работает нормально, мне не нужно включать iomanip
и ничего другого в new.cpp.Конечно, черт возьми, это было связано с некоторыми странностями VS, а не с самим кодом, но все же меня опередило, в чем именно заключалась проблема.