C语言中如何用一个程序调用另一个程序,两个程序都是.c文件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何用一个程序调用另一个程序,两个程序都是.c文件。相关的知识,希望对你有一定的参考价值。

你把被调用的.c文件中的main()函数改成其他名字
如fun();
然后在另一个.c文件的main()函数中调用fun();
只要保证一个C工程只有一个main()做入口点就行了,至于保留哪个main函数,那就要看你程序的逻辑了,注意main函数是入口点的概念
参考技术A 多文件编译。
举个栗子
//main.c
#include "miku.h"
int main(void)

print("hello world!");
return 0;
//miku.h
#ifndef miku_h_
#define miku_h_
#include

extern int print(char *);
#endif//miku.c
#include "miku.h"
int print(char *str)

return printf("%s\n",str);
gcc编译:
gcc
-o
main.exe
miku.c
main.c
visual
c++
把上面的文件添加到工程,编译时会自动组合。

API 请求返回两个对象:Redux 中如何用一个 Reducer 分离状态?

【中文标题】API 请求返回两个对象:Redux 中如何用一个 Reducer 分离状态?【英文标题】:API Request Returns Two Objects: How Do I Separate State in Redux with One Reducer? 【发布时间】:2020-03-25 04:33:52 【问题描述】:

我有一个 API 调用,它返回两个对象:data 和 pageOutput。


data: "["title":["Travis Jackson HOF 1931 W517 # 12 - SGC 50"],"image":["https://i.ebayimg.com/00/s/MTYwMFg5NzY=/z/uU8AAOSwMtdd3ZXo/$_1.JPG"],"itemURL":["https://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=2&toolid=10044&campid=5338164673&customid=vintagebaseball&lgeo=1&vectorid=229466&item=133253226463"]"
pageOutput: ""pageNumber":["1"],"entriesPerPage":["100"],"totalPages":["2"],"totalEntries":["194"]"

我有一个 reducer,它从我的 API 中获取数据并将数据存储在一个称为“棒球”的状态中,就像这样。请注意,它只是存储我的 API 调用中的“数据”部分。

const baseballReducer = (state = [], action) => 
  switch (action.type) 
    case "INIT_BLOGS":
      return action.data;

export const initializeBaseball = () => 
  return async dispatch => 
    const baseballCards = await baseballService.getAll();
    dispatch(
      type: "INIT_BLOGS",
      data: JSON.parse(baseballCards.data)
    );
  ;
;

我需要将 pageOutput 设置为单独的状态。现在我知道我可以创建一个单独的 page reducer,调用 api 并将 pageOutput 数据存储在新状态。但是,我认为对 API 进行两次不同的调用是不好的做法?

有没有更好的方法?我正在考虑将所有数据(包括 pageOutput)存储在棒球状态,但是我不确定这是否是最佳实践,特别是考虑到我有一个需要更新的活动页面的分页控件重新查询数据库。希望这足够清楚——很高兴提供任何额外的代码。

【问题讨论】:

【参考方案1】:

无需进行两次 api 调用,因为您已经在一次 api 调用中获得了所有数据。

基本上你可以:

让两个 reducer 监听相同的调度操作,每个 reducer 通过将有效负载解构为相关属性 (data / pageOutput) 来接收总 api 响应的不同部分 总共分派两个单独的操作,每个减速器一个。

你使用哪个应用程序并不重要,所以这取决于个人喜好。

如果您可以控制后端 api,我可能会以不同的方式处理分页。分页状态可以在客户端完全处理,api 只会响应客户端的请求(限制/偏移量 - 或 pageNr,perPage 查询参数取决于您的喜好)。 即使您因此可以在 api 响应中返回元数据,您也不需要依赖 api 响应来管理您的状态(从 page1 -> page2 的前端状态更改将取决于单击 page2 和客户端定义的配置,而不是关于 api 的响应)。

【讨论】:

我已经做了几次选项一。我需要基于单个调用的状态的不同部分。所以我调度了一个动作,然后在从 api 返回时,返回另一个动作,然后由两个减速器处理。每个人都拉出它需要的部分并相应地存储它。关键是然后记录该操作在两个减速器中处理。 感谢 Trace--我将着手处理这些建议。非常感激。我想我明白你在分页上说什么,但是我正在使用 eBay api,它只允许在一个查询中返回 100 个项目,因此需要进行超过该限制的额外调用。

以上是关于C语言中如何用一个程序调用另一个程序,两个程序都是.c文件。的主要内容,如果未能解决你的问题,请参考以下文章

学习C语言,在软件测试中如何用?

在ubuntu系统中如何用GCC编译运行一个C程序?

在ubuntu系统中如何用GCC编译运行一个C程序?

c语言下抓取cmd中的字符

C语言中如何用gets();语句来接收一个二维数组

C语言中如何用名字存数组,用时间函数模拟随机,实现随机输出一个姓名。