我知道这应该很容易,但我似乎无法掌握它。我想要做的就是能够在main.cpp文件中使用getUTC()函数。这显然是错误的,但我在那里展示了我想要做的事情。善待 - c ++的新手。
我的理解是正确的'建立项目的方法是拥有独立的“零件”。他们自己的文件中的代码,就像我习惯的任何其他语言一样,因为您可以更轻松地查看/编辑。所以在这种情况下,mylib将成为我整个项目中常用的函数。在另一个标题/文件中可能是我的所有文件处理等等。
的main.cpp
#include <Windows.h>
#include "mylib.h"
using namespace mylib;
mylib::getUTC();
mylib.h
#ifndef MYLIB_H
#define MYLIB_H
namespace mylib
{
void getUTC();
}
#endif
mylib.cpp
#include "mylib.h"
#include <ctime>
namespace mylib
{
void getUTC() {
time_t utcTime;
return time(&utcTime);
}
}
更新编辑:
mylib.h
#ifndef MYLIB_H
#define MYLIB_H
namespace mylib
{
time_t getUTC();
}
#endif
mylib.cpp
#include "mylib.h"
#include <ctime>
namespace mylib
{
time_t getUTC() {
time_t utcTime;
return time(&utcTime);
}
}
然后在main.cpp中我可以像mylib::getUTC()
一样调用它。这编译和工作。你们其中一个提到摆脱namespace mylib
,但由于我将在这个文件中有相当多的功能,更不用说可能最终会有更多的头文件/ cpp文件供我的main.cpp使用我认为这是除非有某些原因不应该完成,否则这是区分我的代码/部分的好方法吗?
此外,我现在很明显这是怎么做的......不知道为什么我会感到困惑。我有不同语言的非常扎实的背景,而不是C ++,所以当我开始玩代码时,我主要担心的一个问题是确保我正确认识到&#39;正确/正确的&#39;因此,它不会让我感到困惑,例如使用多个标头/源文件。
更新更新:
我想也许它毕竟不起作用。编译时出现这些错误:
Error C2086 'int mylib::time_t': redefinition mylib.cpp
Error C2447 '{': missing function header (old-style formal list?) mylib.cpp
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int mylib.cpp
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int mylib.h
Error C2143 syntax error: missing ';' before '{' mylib.cpp
Error C2146 syntax error: missing ';' before identifier 'getUTC' mylib.cpp
Error C2146 syntax error: missing ';' before identifier 'getUTC' mylib.h
答案 0 :(得分:1)
你有基本的想法。基本上,您将单独的.cpp文件编译为.o或目标文件。然后将所有.o文件链接到一个可执行文件中。其中一个.cpp文件应包含main
函数。
我发现您的代码有两个问题:
您的main.cpp文件不包含main函数。你可能 想把你的单行代码放在一个main函数中。
你的功能是无效的,但你正在从它返回一些东西。为了从函数中返回一些东西,它的声明和定义都应该有一个返回类型。
答案 1 :(得分:0)
你做得很好,但你可以摆脱使用命名空间行,因为你已经完全合格了#34;四个函数调用,将命名空间放在函数名前面。
此外,您可能希望查看使用类,这是c ++的主要功能之一。
回顾代码,您可能想要更改函数的返回类型,或者它不会编译。
我不确定我是否误读了你在main.cpp中写的意图,但是你不需要再次声明这个功能,你已经通过#include头文件做到了。