当前位置:网站首页>C language improvement article (wchar_t) character type
C language improvement article (wchar_t) character type
2022-07-03 12:01:00 【Ch_ champion】
summary
original C The language is so beautiful ^_^~, Programming ideas inspired by . I have seen similar expressions on many large projects , So today write a Demo, Make a note of , Convenient for later viewing .
IDE:vscode
1、 Source code
#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
typedef enum
{
language_SChinese = 0,
language_English,
}LANGUAGE_T;
typedef struct
{
volatile uint8_t value;
volatile LANGUAGE_T language;
}__attribute__((packed)) SysType_ty;
SysType_ty Sys;
typedef struct
{
uint8_t item_icon;
uint8_t item_title;
}MenuList;
/**
* footwear
*/
typedef enum {
S_badminton = 0,
S_baseball,
S_hockey,
S_football,
S_basketball,
S_rugby,
S_volleyball, //6
S_tennis,
S_table_tennis,
S_billiards, //9
S_ping_pong,
S_golf,
S_count,
}footwearTy;
typedef enum {
t_ERROR = 0,
t_BADMINTON,
t_BASEBALL,
t_HOCKEY,
t_FOOTBALL,
t_BASKETBALL,
t_RUGBY,
t_VOLLEYBALL, //6
t_TENNIS,
t_TABLE_TENNIS,
t_BILLIARDS, //9
t_PING_PONG,
t_GOLF,
t_count,
}String_id;
static MenuList const item_lists[] = {
{S_volleyball, t_VOLLEYBALL},
{S_rugby, t_RUGBY},
{S_tennis, t_TENNIS},
{S_billiards, t_BILLIARDS},
{S_hockey, t_HOCKEY},
};
/**
* show_footwear
*/
uint16_t const init_footwear_index_Lists[S_count] = {
[S_badminton ] = 0,
[S_baseball ] = 2,
[S_hockey ] = 7,
[S_football ] = 0,
[S_basketball ] = 1,
[S_rugby ] = 3,
[S_volleyball ] = 0,
[S_tennis ] = 5,
[S_table_tennis ] = 6,
[S_billiards ] = 8,
[S_ping_pong ] = 4,
[S_golf ] = 9,
};
static wchar_t * const footwear_title_lists_en[t_count] = {
[t_ERROR ] = L"error",
[t_BADMINTON ] = L"badminton",
[t_BASEBALL ] = L"baseball",
[t_HOCKEY ] = L"hockey",
[t_FOOTBALL ] = L"football",
[t_BASKETBALL ] = L"basketball",
[t_RUGBY ] = L"rugby",
[t_VOLLEYBALL ] = L"volleyball",
[t_TENNIS ] = L"tennis",
[t_TABLE_TENNIS ] = L"table_tennis",
[t_BILLIARDS ] = L"billiards",
[t_PING_PONG ] = L"ping_pong",
[t_GOLF ] = L"golf",
};
static wchar_t * const footwear_title_lists_cn[t_count] = {
[t_ERROR ] = L" error ",
[t_BADMINTON ] = L" badminton ",
[t_BASEBALL ] = L" Baseball ",
[t_HOCKEY ] = L" Hockey ",
[t_FOOTBALL ] = L" football ",
[t_BASKETBALL ] = L" Basketball ",
[t_RUGBY ] = L" rugby ",
[t_VOLLEYBALL ] = L" Volleyball ",
[t_TENNIS ] = L" Tennis ",
[t_TABLE_TENNIS ] = L" Table tennis ",
[t_BILLIARDS ] = L" Billiards ",
[t_PING_PONG ] = L" Table Tennis ",
[t_GOLF ] = L" Golf ",
};
static wchar_t * const * string_list = footwear_title_lists_en;
wchar_t * string_get(String_id id)
{
return (wchar_t *) (string_list[id]);
}
LANGUAGE_T language_get(void)
{
return Sys.language;
}
void init_language(void)
{
Sys.language = language_English;
switch (Sys.language)
{
case language_SChinese:
/* code */
string_list = footwear_title_lists_cn;
break;
case language_English:
/* code */
string_list = footwear_title_lists_en;
break;
default:
Sys.language = language_English;
init_language();
break;
}
}
int main()
{
init_language();
printf("str:%s\r\n", string_get((String_id)item_lists[1].item_title));
printf("str:%s\r\n", footwear_title_lists_cn[item_lists[1].item_title]);
for (int i = 0; i < ARRAY_SIZE(item_lists); i++)
{
printf("i:%d, item_icon: %d, item_title: %d\r\n", i, item_lists[i].item_icon, item_lists[i].item_title);
printf("i:%d, show_icon: %d, show_title: %s\r\n", i, init_footwear_index_Lists[item_lists[i].item_icon], string_get((String_id)item_lists[i].item_title));
}
system("pause");
return 0;
}2、 Running results

边栏推荐
- pragma-pack语法与使用
- Master and backup role election strategy in kept
- Groovy test class and JUnit test
- 《剑指offer 03》数组中重复的数字
- Momentum of vulnhub
- Notes on 32-96 questions of sword finger offer
- R language ggplot2 visualization: gganimate package creates dynamic line graph animation (GIF) and uses transition_ The reveal function displays data step by step along a given dimension in the animat
- (构造笔记)ADT与OOP
- Concurrent programming - singleton
- Hongmeng fourth training
猜你喜欢
随机推荐
Xiaopeng P7 hit the guardrail and the airbag did not pop up. The official responded that the impact strength did not meet the ejection requirements
(database authorization - redis) summary of unauthorized access vulnerabilities in redis
shardingSphere分库分表<3>
Socket TCP for network communication (I)
ArcGIS应用(二十一)Arcmap删除图层指定要素的方法
抓包整理外篇fiddler———— 会话栏与过滤器[二]
Cacti monitors redis implementation process
OpenGL 着色器使用
2022年中南大学夏令营面试经验
利用Zabbix动态监控磁盘I/O
Talk about the state management mechanism in Flink framework
Oracle advanced (I) realize DMP by expdp impdp command
MCDF Experiment 1
[learning notes] DP status and transfer
vulnhub之Ripper
Vulnhub's Nagini
PHP get the file list and folder list under the folder
外插散点数据
Vulnhub's Tomato (tomato)
为什么我的mysql容器启动不了呢









