📄 convert.c
字号:
CONV2(TYPE, 3.2 ## POSTFIX, _Sat _Fract, 1.0r) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -3.2 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat short _Fract, -0.5hr - 0.5hr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -1.0 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)/* Unsigned accum to _Sat unsigned/signed fract. */#define SAT_CONV2(TYPE, POSTFIX) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat _Fract, 1.0r) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, 3.2 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat _Fract, 1.0r) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, 1.0 ## POSTFIX, _Sat unsigned long long _Fract, 1.0ullr)/* Signed fract to _Sat unsigned fract. */#define SAT_CONV3(TYPE, POSTFIX) \ CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, -0.5 ## POSTFIX, _Sat unsigned long long _Fract, 0.0ullr)/* Signed integer to _Sat signed/unsigned fract. */#define SAT_CONV4(TYPE) \ CONV2(TYPE, 100, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, -100, _Sat short _Fract, -0.5hr - 0.5hr) \ CONV2(TYPE, 100, _Sat _Fract, 1.0r) \ CONV2(TYPE, -100, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -100, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -100, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -100, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -100, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -100, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -100, _Sat unsigned long long _Fract, 0.0ullr) \ CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, -1, _Sat short _Fract, -0.5hr - 0.5hr) \ CONV2(TYPE, 1, _Sat _Fract, 1.0r) \ CONV2(TYPE, -1, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -1, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -1, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -1, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -1, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -1, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -1, _Sat unsigned long long _Fract, 0.0ullr)/* Unsigned integer to _Sat signed/unsigned fract. */#define SAT_CONV5(TYPE) \ CONV2(TYPE, 100, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, 100, _Sat _Fract, 1.0r) \ CONV2(TYPE, 100, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, 100, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, 100, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, 100, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, 100, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, 100, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, 1, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, 1, _Sat _Fract, 1.0r) \ CONV2(TYPE, 1, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, 1, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, 1, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, 1, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, 1, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, 1, _Sat unsigned long long _Fract, 1.0ullr)/* Floating-point to _Sat signed/unsigned fract. */#define SAT_CONV6(TYPE) \ CONV2(TYPE, 100.0, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, -100.0, _Sat short _Fract, -0.5hr - 0.5hr) \ CONV2(TYPE, 100.0, _Sat _Fract, 1.0r) \ CONV2(TYPE, -100.0, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 100.0, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -100.0, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 100.0, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -100.0, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 100.0, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -100.0, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 100.0, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -100.0, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 100.0, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -100.0, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 100.0, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -100.0, _Sat unsigned long long _Fract, 0.0ullr) \ CONV2(TYPE, 1.0, _Sat short _Fract, 1.0hr) \ CONV2(TYPE, -1.0, _Sat short _Fract, -0.5hr - 0.5hr) \ CONV2(TYPE, 1.0, _Sat _Fract, 1.0r) \ CONV2(TYPE, -1.0, _Sat _Fract, -0.5r - 0.5r) \ CONV2(TYPE, 1.0, _Sat long _Fract, 1.0lr) \ CONV2(TYPE, -1.0, _Sat long _Fract, -0.5lr - 0.5lr) \ CONV2(TYPE, 1.0, _Sat long long _Fract, 1.0llr) \ CONV2(TYPE, -1.0, _Sat long long _Fract, -0.5llr - 0.5llr) \ CONV2(TYPE, 1.0, _Sat unsigned short _Fract, 1.0uhr) \ CONV2(TYPE, -1.0, _Sat unsigned short _Fract, 0.0uhr) \ CONV2(TYPE, 1.0, _Sat unsigned _Fract, 1.0ur) \ CONV2(TYPE, -1.0, _Sat unsigned _Fract, 0.0ur) \ CONV2(TYPE, 1.0, _Sat unsigned long _Fract, 1.0ulr) \ CONV2(TYPE, -1.0, _Sat unsigned long _Fract, 0.0ulr) \ CONV2(TYPE, 1.0, _Sat unsigned long long _Fract, 1.0ullr) \ CONV2(TYPE, -1.0, _Sat unsigned long long _Fract, 0.0ullr)int main (){ ALL_CONV (short _Fract, hr); ALL_CONV (_Fract, r); ALL_CONV (long _Fract, lr); ALL_CONV (long long _Fract, llr); ALL_CONV (unsigned short _Fract, uhr); ALL_CONV (unsigned _Fract, ur); ALL_CONV (unsigned long _Fract, ulr); ALL_CONV (unsigned long long _Fract, ullr); ALL_CONV (short _Accum, hk); ALL_CONV (_Accum, k); ALL_CONV (long _Accum, lk); ALL_CONV (long long _Accum, llk); ALL_CONV (unsigned short _Accum, uhk); ALL_CONV (unsigned _Accum, uk); ALL_CONV (unsigned long _Accum, ulk); ALL_CONV (unsigned long long _Accum, ullk); ALL_ACCUM_CONV (short _Accum, hk); ALL_ACCUM_CONV (_Accum, k); ALL_ACCUM_CONV (long _Accum, lk); ALL_ACCUM_CONV (long long _Accum, llk); ALL_ACCUM_CONV (unsigned short _Accum, uhk); ALL_ACCUM_CONV (unsigned _Accum, uk); ALL_ACCUM_CONV (unsigned long _Accum, ulk); ALL_ACCUM_CONV (unsigned long long _Accum, ullk); NEG_CONV (short _Fract, hr); NEG_CONV (_Fract, r); NEG_CONV (long _Fract, lr); NEG_CONV (long long _Fract, llr); NEG_CONV (short _Accum, hk); NEG_CONV (_Accum, k); NEG_CONV (long _Accum, lk); NEG_CONV (long long _Accum, llk); SAT_CONV1 (short _Accum, hk); SAT_CONV1 (_Accum, k); SAT_CONV1 (long _Accum, lk); SAT_CONV1 (long long _Accum, llk); SAT_CONV2 (unsigned short _Accum, uhk); SAT_CONV2 (unsigned _Accum, uk); SAT_CONV2 (unsigned long _Accum, ulk); SAT_CONV2 (unsigned long long _Accum, ullk); SAT_CONV3 (short _Fract, hr); SAT_CONV3 (_Fract, r); SAT_CONV3 (long _Fract, lr); SAT_CONV3 (long long _Fract, llr); SAT_CONV4 (signed char); SAT_CONV4 (short); SAT_CONV4 (int); SAT_CONV4 (long); SAT_CONV4 (long long); SAT_CONV5 (unsigned char); SAT_CONV5 (unsigned short); SAT_CONV5 (unsigned int); SAT_CONV5 (unsigned long); SAT_CONV5 (unsigned long long); SAT_CONV6 (float); SAT_CONV6 (double); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -