【问题标题】:Importing Functions from a different C file从不同的 C 文件导入函数
【发布时间】:2011-11-06 06:06:18
【问题描述】:
我想从 Microsoft Visual C++ 6.0 中的另一个文件导入函数。我怎样才能做到这一点?我已经尝试如下:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#import <functions.cpp>
其中 functions.cpp 是我要从中导入函数的文件名。但这给出了一个错误:F:\CC++\Term Project\Dos Plotter\Funtiom Plotter.cpp(6):致命错误 C1083:无法打开类型库文件:'Functions.cpp':没有这样的文件或目录
我该如何解决这个问题?
【问题讨论】:
标签:
c++
c
function
import
【解决方案1】:
#import 指令用于类型库,通常是 COM 或 .Net,而不是 C++ 源文件。有关完整的详细信息,请参阅the MSDN page。
为了包含来自另一个文件的 C++ 函数,您通常需要使用 #include 指令 (details)。这包括编译期间给定文件中的代码。大多数情况下,您应该包含一个包含函数原型的标题;可以包含代码文件,但通常不需要或总是安全的。
为此,您应该为您的函数提供两个文件,一个头文件和一个源文件。
标题将如下所示:
#pragma once
void Function(int arg);
来源:
#include "functions.hpp"
void Function(int arg) { ++arg; }
要在另一个文件中使用它,您可以:
#include "functions.hpp"
void OtherFunction()
{
Function(2);
}
您还应该注意,标题通常应该只包含一次。保证这一点的 MSVC 标准方法是在开头添加 #pragma once。
编辑:并解决您发布的特定错误,它适用于#import 和#include,您尝试包含的文件必须在编译器搜索范围内的某个位置小路。在 Visual Studio 中,您应该添加项目所包含的必要路径(这因版本而异,但通常位于项目属性 -> 编译器下)。
【解决方案2】:
1) 你是说functions.hpp吗? C/cpp 文件不应该是#included,除非你非常清楚自己在做什么。
2) 将文件的位置添加到项目属性中的自定义包含路径中,或者使用include "foo"格式而不是include <foo>
3) 导入在 C 中未定义。您需要分离原型和实现,包含保护原型文件,#include 原型文件。
【解决方案3】:
将文件functions.cpp 放在同一个目录下,请改用include "functions.cpp"
【解决方案4】:
将文件命名为imported-function.hpp,并确保它位于同一目录中。或者,您可以将其链接到
- Linux:
/home/uname/appfolder/imported-function.hpp
- 窗口:
C:\Username\uname\appfolder\imported-function.hpp
- Chrome 操作系统:
/home/chronos/u-4e4342ea6b3b92244e7d4753922f0dc7125f4a1d/MyFiles/appfolder/imported-function.hpp