c - 一种在 C 中自动将字符串文字转换为 `unsigned char*` 的方法?

标签 c casting libxml2 string-literals

我正在为一个项目使用 libxml2,它的一个怪癖是 xmlCharunsigned char 而不仅仅是 char 的类型定义>。据我所知,这对实际执行没有任何影响,但使用字符串文字真的很烦人,因为我必须手动转换为 const xmlChar*。我真正想要的是能够编写 xmlGetProp(node, "some-property") 而不是 xmlGetProp(node, (const xmlChar*)"some-property")。它可能看起来微不足道,但当所有其他语句都有一个 (const xmlChar*) 转换时,它会使代码更难阅读。

有没有办法在不手动转换的情况下将 const char* 转换为 const xmlChar* (const unsigned char*)?或者,是否有我不应该这样做的理由?

我认为这在 C++ 中会相当容易,但我仍然坚持使用 C。

最佳答案

libxml2定义了一个宏BAD_CASTxmlstring.h 中:

#define BAD_CAST (xmlChar *)

可以这样使用:

xmlStrEqual(name, BAD_CAST "xml:lang")

关于c - 一种在 C 中自动将字符串文字转换为 `unsigned char*` 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369175/

相关文章:

c - 如何使用 MagickWand C API 组合图像?

c - 为什么求阶乘的函数是错误的?

C - 段错误(核心已转储)

c++ - 实现 C++ 状态机。如何解决 Wpmf 转换警告?

c - XML 验证器(检查给定的 xml 是否正确或损坏)

c++ - 回滚 XML 功能

c - 关于覆盖 linux 内核宏的一件有趣的事情

java - 避免在 Java 中进行动态转换

PostgreSQL:在将整数转换为非整数类型以强制在 PostgreSQL 中进行浮点除法时,我应该使用哪种数字类型?

ios - 在 ASIHTTPRequest 中找不到“libxml/HTMLparser.h”文件