C++ 在两个不同的c+之间传递值+;同一项目中的文件

C++ 在两个不同的c+之间传递值+;同一项目中的文件,c++,C++,这里没有问题。如何在同一项目中的两个不同cpp文件之间传递值?你制造物品吗?如果是,其他cpp文件如何查看它? 请给我一些启示 编辑:一些澄清。我正在尝试将直接输入与一个程序(其中我有插件sdk)接口。我正试图把操纵杆和它连接起来。当我查看代码时,似乎没有主函数,但我可能错了(比如,我可能没有查看正确的文件)。我知道编程,还有指针之类的东西,还有类。为了达到我想要的目的,我应该学习或学习什么吗?通常在一个cpp文件中定义一个函数,然后在头文件中将该函数声明为extern,并将头文件包含在需要使用

这里没有问题。如何在同一项目中的两个不同cpp文件之间传递值?你制造物品吗?如果是,其他cpp文件如何查看它? 请给我一些启示


编辑:一些澄清。我正在尝试将直接输入与一个程序(其中我有插件sdk)接口。我正试图把操纵杆和它连接起来。当我查看代码时,似乎没有主函数,但我可能错了(比如,我可能没有查看正确的文件)。我知道编程,还有指针之类的东西,还有类。为了达到我想要的目的,我应该学习或学习什么吗?

通常在一个cpp文件中定义一个函数,然后在头文件中将该函数声明为
extern
,并将头文件包含在需要使用该函数的任何其他cpp文件中。然后可以编写正常调用函数的代码。在链接时,您需要提供由两个cpp文件生成的对象文件,并且链接器…将它们链接在一起,因此,一个文件中的函数调用会在调用另一个cpp文件中定义的函数时正确传递值。

引用不同文件中的代码通常会使用#include

您可以在头文件中声明全局变量,如下所示:

extern int GlobalVar;
在一个编译单元(cpp文件)中,您必须对其进行初始化:

int GlobalVar = 5;
现在,任何包含头的其他编译单元都共享全局变量的相同实例(我希望语法正确,我很少使用它)


应该提到的是,你的问题表明对C++中的程序应该如何组织的普遍缺乏理解。简而言之,您通常有一个名为

main.cpp
的文件,其中包含程序的入口点。其余的,在C++中,大部分时间都是在课堂上完成的。一个类通常分为两部分,在
头文件
中声明该类,在
cpp文件
中实现该类。要使用类,请包含相应的
头文件
。这是一个简短的版本,还有更多的内容要讲,但这应该为您提供一个良好的起点。

在几乎所有情况下,在编译单元之间共享数据是一个坏主意。一个编译单元,只是为了让您加快C++术语的速度,通常有效地引用一个实现文件(带有扩展名、CPP或.cc等)。我们让各个编译单元彼此“通信”的方式是使用头文件和函数,而不是原始数据

假设我们有一个实现文件main.cc和第二个实现文件human.cc。我们希望main.cc与human.cc通信。我们开始:

// main.cc
#include "human.hh"
int main()
{
    make_the_human_dance(60);
    return 0;
}


// human.hh
void make_the_human_dance(int duration);


// human.cc
#include "human.hh"
void make_the_human_dance(int duration)
{
    // define how a human dances properly
    // ...
}

根据同样的原则,您可以使用类进行通信。在头文件中声明类,并在实现文件中定义类的方法。有时您必须在头文件中提供函数的实现,但这已经偏离主题。

这有点不清楚。你的问题是什么,你想实现什么?听起来不傲慢,但你的陈述
我知道编程,指针和其他东西,类
在你的经验水平上提供了一个相当多的途径。至于你的问题,你应该学什么,那么,面向对象编程呢?难道不是OO编程类之类的东西吗?我在计算机科学学校上学。这是他们教授的基本内容,注意
extern
对于函数声明是隐式的。虽然您可以编写
extern void f()
,但从来没有人这样做过,因此可能会混淆readers.hmm,在我使用GlobalVar的文件中(不是我设置它的文件),它会给我一个未声明的标识符错误。见我的编辑你确定你已经包括了标题吗?+1因为例子确实是表达想法的最好方式。我太懒了,我想我知道什么是类、头和实现。但我觉得我错过了什么。比如,一些我不知道的事。。。。那么,根据您的回答,这意味着您不能在没有main的情况下将值传递给实现文件?你写插件的时候呢?还是DLL?@jello不,如果要将程序构建为可执行文件,我们需要一个
main()
函数。因为
main()
是程序的入口点,所以当我们运行构建的可执行文件时,操作系统将首先查找。现在,如果您真的想在任何两个编译单元之间共享数据,那么您肯定可以这样做。您要做的是声明一个全局变量,然后在要使用该全局变量的任何其他编译单元中使用
extern
关键字再次声明它。如果你愿意的话,我可以扩展我的答案来涵盖这一点,但这种技巧通常是要避免的。@jello还有,我们总是不知道一些事情。这是C++固有的;威廉告诉外人泰克斯。你也是牛仔。我明天试试。但是当你开发插件时,它是DLL,对吗?不是可执行文件?