在C中,您可以定义结构来保存各种变量;
typedef struct {
float sp;
float K; // interactive form - for display only
float Ti; // values are based in seconds
float Td;
} pid_data_t;
Run Code Online (Sandbox Code Playgroud)
但让说K,Ti和Td不应该被公开设置,并且只能用于他们被操纵后存储的值.所以,我希望这些值不被更新;
pid_data_t = pid_data;
pid_data.K = 10; // no good! changing K should be done via a function
Run Code Online (Sandbox Code Playgroud)
我想通过一个函数设置它们;
int8_t pid_set_pid_params(float new_K_dash, float new_Ti_dash,
float new_Td_dash)
{
… // perform lots of things
pid_data->K = new_K_dash;
pid_data->Ti = new_Ti_dash;
pid_data->Td = new_Td_dash;
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我知道C++使用类似于get/set属性,但是想知道人们可能在C上做什么.
你的公共接口只提供了一个不透明的指针(也许DATA*,或data_handle),以及处理函数create_data(),set_data_value(),read_data_value(),free_data(),等,这在不透明的指针操作.
非常喜欢FILE*.
只是不要给你的客户端内部头文件:-)
// library.h
typedef struct data_t * data_handle;
data_handle create_data();
void free_data(data_handle);
Run Code Online (Sandbox Code Playgroud)
私人实施(不发货):
#include "library.h"
struct data_t
{
/* ... */
};
data_handle create_data() { return malloc(sizeof(struct data_t)); }
void free_data(data_handle h) { free(h); }
/* etc. etc. */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |