[英]Reverse an ASCII string using C macros only
我正在尝试在Pebble中输出希伯来语单词,这些单词在C代码中以ISO-8859-8编码的char *形式给出,但是我需要将它们转换为ISO-8859-8-L编码的字符串。 这基本上意味着反转字符串:
"ABC D" => "D CBA"
输入字符串是8位ASCII(无多字节或Unicode)。 我知道如何在C代码中对字符串进行就地还原,但是随后我需要对init()函数中的所有字符串进行逆向处理,因此我想知道是否存在定义C宏的方法。
我不知道使用CPP来反转字符串。
您当然可以使用类似函数的宏,如下所示。
#define rev_str(string, len) do { \
int i; \
for(i = 0; i < len>>1; ++i) { \
const uint8_t t = string[len - i - 1]]; \
string[len - i - 1] = string[i]; \
string[i] = t; \
} \
} while(0)
但是,我看不出它比内联函数有什么优势。
另一方面,如果您希望将其推迟到编译时(并且希望仅使用宏,这使我认为可以),我相信您将需要CPP范围之外的东西,例如C ++的模板元编程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.