gpt4 book ai didi

android - 每个类在 C 代码 (NDK) 中为自己创建静态字段

转载 作者:行者123 更新时间:2023-11-30 19:13:17 25 4
gpt4 key购买 nike

我是 C 和 NDK 的新手,在我的应用程序中我想在不同文件之间保存和共享一些数据。所以我制作了包含静态字段的 .c 文件。

当我在一个文件中使用它时,它工作得很好,但是当我尝试在其他文件中使用它时,它没有我之前写入的数据。看起来每个文件都会在其内部创建静态字段的新实例

编辑

添加了 .h 文件。

代码test.h:

#ifndef IJKPLAYER_TEST_H
#define IJKPLAYER_TEST_H

void saveStartLoadingData();

int64_t getStartLoading();

void addToLoadingByte(int64_t bytesCount);

void endOfLoading();

void calculateAndSaveCurrentBitrate();

int64_t getDiff();

int64_t getLoadedBites();

int64_t getEndLoading();

int64_t getCurrentBitrate();

#endif //IJKPLAYER_TEST_H

测试.c:

#include "test.h"
#include <time.h>

static const int64_t ONE_SECOND= 1000000000LL;

extern int64_t start_loading;
extern int64_t end_loading ;
extern int64_t loaded_bytes;
extern int64_t currentBitrate;
extern int64_t diff;

int64_t now_ms() {
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
return (int64_t) now.tv_sec*1000000000LL + now.tv_nsec;
}

void saveStartLoadingData(){
loaded_bytes = 0LL;
start_loading = now_ms();
}

int64_t getStartLoading(){
return start_loading;
}

void addToLoadingByte(int64_t bytesCount){
loaded_bytes += bytesCount;
}

void endOfLoading(){
end_loading = now_ms();
diff = end_loading - start_loading;
}

void calculateAndSaveCurrentBitrate(){
currentBitrate = loaded_bytes * ONE_SECOND/ diff;
loaded_bytes = 0;
}

int64_t getDiff(){
return diff;
}
int64_t getLoadedBites(){
return loaded_bytes;
}
int64_t getEndLoading(){
return end_loading;
}
int64_t getCurrentBitrate(){
return currentBitrate;
}

现在我以这种方式将其包含到其他文件中:

#include "test.h"

编辑2

新错误

libavformat/avio.c:430: error: undefined reference to 'getStartLoading'
libavformat/avio.c:431: error: undefined reference to 'getEndLoading'
libavformat/avio.c:432: error: undefined reference to 'getLoadedBites'

最佳答案

您只能包含一次 .c 文件。

如果您需要在另一个 .c 或 .cpp 文件中使用该 .c 文件中的变量或函数,则必须创建一个 .h 文件并将其包含在需要变量的文件中。您可以根据需要将 .h 文件包含在任意多个 .c 或 .cpp 文件中。

在.h文件中写入:

extern int64_t start_loading;
void saveStartLoadingData();

从 .c 文件中删除所有静态

关于android - 每个类在 C 代码 (NDK) 中为自己创建静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com