c ++ - 将功能添加到单独文件的正确方法

时间:2015-11-14 21:05:49

标签: c++

我知道这应该很容易,但我似乎无法掌握它。我想要做的就是能够在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

2 个答案:

答案 0 :(得分:1)

你有基本的想法。基本上,您将单独的.cpp文件编译为.o或目标文件。然后将所有.o文件链接到一个可执行文件中。其中一个.cpp文件应包含main函数。

我发现您的代码有两个问题:

  1. 您的main.cpp文件不包含main函数。你可能 想把你的单行代码放在一个main函数中。

  2. 你的功能是无效的,但你正在从它返回一些东西。为了从函数中返回一些东西,它的声明和定义都应该有一个返回类型。

答案 1 :(得分:0)

你做得很好,但你可以摆脱使用命名空间行,因为你已经完全合格了#34;四个函数调用,将命名空间放在函数名前面。

此外,您可能希望查看使用类,这是c ++的主要功能之一。

回顾代码,您可能想要更改函数的返回类型,或者它不会编译。

我不确定我是否误读了你在main.cpp中写的意图,但是你不需要再次声明这个功能,你已经通过#include头文件做到了。