Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构建一个c++;linux程序。什么时候分拆单独的文件和单独的程序_C++_Linux_Architecture - Fatal编程技术网

C++ 构建一个c++;linux程序。什么时候分拆单独的文件和单独的程序

C++ 构建一个c++;linux程序。什么时候分拆单独的文件和单独的程序,c++,linux,architecture,C++,Linux,Architecture,对c/c++来说是相当新的。我正在为RAPI和.NET编写一些代码,这对我来说很容易,但是我在C++中与设计进行了一次较量。p> 简言之,我应该在什么时候将代码从主文件、另一个cpp文件和一个单独的程序中分离出来 目前,我有两个程序,通过插座fifo相互对话 PiSocket-所有互联网通信。Put's,Get's和信号机连接。以及从MainPi发送和接收数据 MainPi-使用PiSocket发送和接收数据,处理数据库并执行系统命令(如拉/发送gpio数据) 我不确定的是: 基本上有4段代码。

对c/c++来说是相当新的。我正在为RAPI和.NET编写一些代码,这对我来说很容易,但是我在C++中与设计进行了一次较量。p> 简言之,我应该在什么时候将代码从主文件、另一个cpp文件和一个单独的程序中分离出来

目前,我有两个程序,通过插座fifo相互对话

PiSocket-所有互联网通信。Put's,Get's和信号机连接。以及从MainPi发送和接收数据

MainPi-使用PiSocket发送和接收数据,处理数据库并执行系统命令(如拉/发送gpio数据)

我不确定的是: 基本上有4段代码。主循环、internet连接、数据库调用和系统命令。应在何时/如何发布?我怀疑所有的代码组合将远远超过20k行,但它必须是相当实时的通信(在几秒钟内)

使用套接字进行通信看起来很混乱,所以我认为每一部分都应该是自己的cpp文件。同时,PiSocket.cpp引用MainPi和vise引用MainPi是否为循环冗余?或者我应该用自己的线程调用main中无限循环中的每个片段?也会有代码通过web/PiSocket更新,这可能很重要,但我怀疑

当然这很简单,但我的搜索结果并没有透露太多,我真的不想以后再重新设计它


提前完成任务。

您将两个独立的问题混为一谈:

    > CPP文件意味着一个单独的C++翻译单元,它导致一个单独的对象/库文件,它可能在或可能不链接在已经构建的其他对象

    中。
  • .cpp文件具有自己的
    main()
    可以生成单独的可执行程序,这些程序在自己的进程中运行

当您有单独的进程时,您只需要IPC机制,如套接字/FIFO。你的问题描述中没有任何东西表明这对你有用

如果我是你,我会写“piSocket.cpp”作为一个Internet连接库:它可以使用线程在后台进行通信/处理,“main.cpp”中的代码调用可以规定在可报告事件发生时调用的函数(例如,数据从Internet到达)。您还需要一个“piSocket.h”文件,通常包含typedef、常量、枚举、函数声明、类定义、模板和/或与“piSocket”comms功能相关联的内联函数。piSocket.cpp和mainPi.cpp都应包含该标题

详细信息因编译器而异,但基本构建过程可能类似于:

# compile piSocket.cpp into piSocket.o
g++ -c piSocket.cpp

# compile mainPi.cpp and link in piSocket.o to form myApp executable
g++ -o myApp mainPi.cpp piSocket.o

总而言之,我想这会给你带来痛苦。一个好的替代方法是将所有内容都放在一个文件中,先学习足够的语言以使功能正常工作,然后再担心将文件内容一分为二。如果您无法使功能正常工作,那么理解更好的“物理设计”(分离为文件)是没有意义的。

谢谢。我就是这么想的。不知道为什么以前的开发人员制作了两个独立的程序。听起来每个主要功能领域都应该在自己的cpp文件中,这比现在的做法更有意义。。