我正在尝试在 Xcode 项目中实现 C++ 类,但出现以下错误:
Expected ';' after top level declarator
Unknown type name 'class'; did you mean 'Class'
#ifndef DoingSomething_hpp
#define DoingSomething_hpp
#include <stdio.h>
class DoingSomething {
public:
static DoingSomething *instance();
int doSomething();
};
#endif /* DoingSomething_hpp */
但是在我将 DoingSomething.hpp 添加到我的 viewController 后,错误开始显示:
#import "ViewController.h"
#import "DoingSomething.hpp"
@interface ViewController ()
你们中的任何人都知道为什么会出现此错误,或者我该如何修复,或者是否有解决方法?
我将非常感谢您的帮助。
问题是您在 Objective-C 文件(它是 C 的超集)中使用 C++ 标头,这就是它无法识别 C++ 语法的原因。为了使其正确编译,您应该只在 c++ 或 Objective-C++ (.mm) 源文件中包含 C++ 头文件。尝试将 viewControllers 文件扩展名从 .m 更改为 .mm
将文件扩展名从
.m
(Objective C)更改为 .mm
(Objective C++),您的编译将会更加顺利。
我混合了 C 和 C++ 文件,因此我必须用“#ifdef __cplusplus”包装 C++ 标头内容,如下所示。这立即位于标题的通常“#ifndef”内。
#ifdef __cplusplus
#包括
类废话 { ... }
#endif /* __cplusplus */