【发布时间】:2018-04-27 15:44:40
【问题描述】:
我有一个 .cpp 文件,我声明了一个函数
#ifndef MyFile_hpp
#define MyFile_hpp
#ifdef __cplusplus
extern "C" {
#endif
void runCode();
#ifdef __cplusplus
}
#endif
#endif
这很好用。我可以在我的 Objc 中调用这个函数。在我的实现中,我有一个 extern void,它不会让我打电话。它给出了未定义的符号。我需要按原样构建,extern 将在编译时在不同的文件中声明。有了 extern,这个编译器是否应该信任我并让我构建?
#include "MyFile.h"
extern int runMe();
#ifdef __cplusplus
extern "C" {
#endif
void runCode() {
runMe();
}
#ifdef __cplusplus
}
#endif
【问题讨论】:
-
第一个显示的代码是 .cpp 文件(如问题正文中所述)、名为“MyFile.hpp”的标头(如重新包含保护所暗示的)或名为“MyFile.h”的标头"(包含行中使用的名称)?
-
第一个文件名为 MyFile.h,第二个文件名为 MyFile.cpp
-
你能给出函数
runMe();的定义吗?我在引用的代码中没有看到它。我觉得编译器/链接器。 -
显示的代码是由 C++ 编译器还是 C 编译器编译的? extern是C++编译器编译的还是C编译器编译的?
-
如果将
runMe()的声明移到外部“C”中会发生什么?
标签: c++ objective-c xcode extern