Linux g++ 下的 MFC 头文件:在“<”标记之前需要“”
Posted
技术标签:
【中文标题】Linux g++ 下的 MFC 头文件:在“<”标记之前需要“”【英文标题】:MFC header file under Linux g++: expected ‘’ before ‘<’ tokenLinux g++ 下的 MFC 头文件:在“<”标记之前需要“” 【发布时间】:2012-07-05 03:22:36 【问题描述】:我有一个基于 MFC 的旧 C++ 项目,我正在尝试在 Linux (Centos 6.2) 上的 eclipse 中使用 g++ 进行编译。 我从头文件中收到以下错误:
RawData.h:54: error: expected template-name before ‘<’ token
RawData.h:54: error: expected ‘’ before ‘<’ token
RawData.h:54: error: expected unqualified-id before ‘<’ token
这是头文件中出现问题的部分(从第 54 行开始):
class CRawDayData: public CArray<CRawQHData*,CRawQHData*>
public:
CRawDayData();
virtual ~CRawDayData();
public:
tm m_tmDate;
;
我认为这个问题与 CArray 有关,因为我在 Linux 上并且没有使用 MFC 的 afx 东西。有什么想法吗?
【问题讨论】:
编译器根本不知道CArray
是什么,因此会出现错误消息。如果它是一个“基于 MFC”的项目,正如您自己所说的,那么您将需要 Linux 上的 MFC。 CArray
是 MFC 的一部分。那么,你打算怎么做呢?将 MFC 移植到 Linux?
是的,我正在将 Windows 程序移植到 Linux。我只需要与 CArray 等效的 Linux,以及头文件的正确语法。倾向于 STL std::vector。
【参考方案1】:
如果这是您得到的唯一错误,我建议将 CArray 替换为与 STL 等效的 std::vector。如果 MFC 或 windows API 被广泛使用,最好尝试针对 Winelib 进行编译。
参考:Run MFC Program on Linux
使用STL,你可以这样写:
#include<vector>
class CRawDayData: public vector<CRawQHData*>
public:
CRawDayData();
virtual ~CRawDayData();
public:
tm m_tmDate;
;
【讨论】:
感谢您的回答,在我看来,STL 将是转换的最佳途径。那么,我将如何在 STL 中做到这一点?在头文件中用 std::vector 替换 CArray 的正确语法是什么? 请浏览文档。 cplusplus.com/reference/stl/vector 顺便说一句,STL 容器并不意味着派生自,它们被用作您创建的任何类中的组件(即成员),或者只是使用 vector所有 MFC 的东西都只是 windows,所以它们在 Linux 上不可用。您必须转换为使用一些跨平台或特定于 linux 的库,例如 STL、wxWidgets 等。
【讨论】:
以上是关于Linux g++ 下的 MFC 头文件:在“<”标记之前需要“”的主要内容,如果未能解决你的问题,请参考以下文章
linux C语言的头文件对应Windows下的头文件是哪些??