gpt4 book ai didi

c - 基于文本语言的决策

转载 作者:行者123 更新时间:2023-11-30 16:51:36 25 4
gpt4 key购买 nike

我目前正在 PIC32 平台上使用 C 编程语言使用 MPLAB X (IDE) 进行开发。

我即将开展一个重大项目,其中包括在 TFT 屏幕上显示图形和文本。我们为多种语言开发系统,包括“从右到左”和“从左到右”书写的语言。因此,一些符号也会改变它们的位置,文本也会改变它们在屏幕上的对齐方式。

到目前为止,我看到我以前的开发人员以这样的方式实现代码:每个显示的屏幕或屏幕上显示的每个对象都会针对所选语言进行测试,然后采取相应的操作。

例如:

/**Some actions shared by all the languages**/
.
.
/* language specific actions: */
if(language == lang1){
.
.
/* Performs some actions */
/* e.g: */
displayText(txt, LEFT_ALIGNED);
.
.
} else if(language == lang2){
.
.
/**SAME** actions with only minor changes depending on the language selected. */
/* e.g: */
displayText(txt, RIGHT_ALIGNED);
.
.
} else if.... (and so on)

正如您所看到的,这似乎是相当大的开销,并且这种方式的代码有很多多余的代码重复,特别是当这个结构在几乎每个函数/源文件中重复时。

我正在尝试考虑一种开发更多“多态”结构的方法,该结构不需要那么多“if else”语句。

我尝试在互联网上搜索一些实现基于文本的决策的示例,但无法找到我需要的内容,主要是因为我发现很难描述我的问题。

我希望这不是一个含糊的问题,但实现这种情况是否有任何结构性共识?

非常感谢,祖夫A.

最佳答案

我会寻找一组语言/操作结构,然后在该数组中搜索相关语言,并执行关联的操作:

typedef struct {
char *lang;
void (*action)();
} action_t;

action_t actions[] = {{"en", func1}, {"de", func2}, ...};
...
for(int i = 0; i < sizeof(actions)/sizeof(actions[0]); i++)
if(!strcmp(actions[i].lang, language)) {
actions[i].action();
break;
}

关于c - 基于文本语言的决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41713857/

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