如何修复''预期的';'在顶级声明程序之后”和“未知类型名称'class'?

时间:2019-05-29 08:19:52

标签: objective-c xcode objective-c++ swift4.2

我用可可粉将TuiKit导入到我的空白swift应用程序中,该TUIKit是由腾讯用Objective-C编写的imSDK演示。我收到错误:预期为';'在顶级声明符和未知类型名称“ class”之后;你是说'班级'吗?

错误为wav.h的文件,并且有wav.mm文件。这是代码:

文件wav.h

#ifndef WAV_H
#define WAV_H
#include <stdio.h>
class WavWriter {
public:
    WavWriter(const char *filename, int sampleRate, int bitsPerSample, int channels);
    ~WavWriter();
    void writeData(const unsigned char* data, int length);
private:
    void writeString(const char *str);
    void writeInt32(int value);
    void writeInt16(int value);
    void writeHeader(int length);
    FILE *wav;
    int dataLength;
    int sampleRate;
    int bitsPerSample;
    int channels;
};
#endif

错误在“ class WavWriter”行上。

wav.mm文件

#import <UIKit/UIKit.h>
#include "wav.h"
void WavWriter::writeString(const char *str) {

    fputc(str[0], wav);
    fputc(str[1], wav);
    fputc(str[2], wav);
    fputc(str[3], wav);
}

....

我搜索了两天,却找不到答案。有什么帮助吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您的wav.h文件管理器包含在不是.mm文件的编译单元中(这意味着“作为Objective-C ++进行编译”,即.m或{{1 }}文件。

您需要用

包围类定义
.c

除非编译的文件是C ++或Objective-C ++,否则#if defined __cplusplus // the C++ defs #endif 之间的行将被忽略。

如果您有直接的Objective-C文件,需要知道其类型,则可以使用#ifdef ... #endiftypedef或使其不完整的void*类型

struct