为什么"cups_option_t::name"和"::value"不是"const char*"?
Is there a reason why `cups_option_t::name` and `::value` aren't `const char*`?
我不想使用cupsAddOption()
,因为它具有二次行为(只向分配的内存块添加一个条目(,并且它对每个名称和值字符串进行strdup处理,而在我的情况下,它们都是字符串文字。因此,在对cupsPrintFile()
的调用中,我想传递一个cups_option_t
s的C数组。
但作为一名C++程序员,我不能将C字符串文字(类型为const char[]
(分配给cups_option_t
字段,因为它们是char*
。
这只是懒惰的API设计,还是CUPS实际上在原地操纵这些字符串?
由于它们指向malloc
ed和strcpy
ed内存,因此显然不能是const
。
您实际预计会受到哪些绩效处罚?你实际多久使用一次这个函数?Prematue优化通常是一个糟糕的习惯,导致代码难以维护。
相关文章:
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 为什么 const 函数返回左值而不是右值?
- 为什么"std::set::erase(const key_type&)"返回"size_type"而不是"bool"?
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 为什么 std::uniform_int_distribution<IntType>::operator() 不是 const?
- 编译器在传递 const 变量时返回错误:模板参数不是常量表达式
- const(但不是constexpr)用作内置数组大小
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 有条件地传递修改后的副本而不是const原始副本变得丑陋
- 如何初始化不是静态的const成员
- 为什么“操作员”需要const但不是为“运营商&lt;”
- 将成员函数标记为 const 时,如果它在概念上不是
- 对类成员而不是 getter 的 Const 引用
- 为什么我的运算符=(T&&)模板只绑定到一个const&而不是一个&&?
- 为什么使用带有 const 的方法而不是第一个没有常量的方法
- 我应该始终使用"T&&"而不是"const T&"或"T&"来绑定到回调函数吗?
- 为什么在const和非const方法中删除代码重复不是不确定的行为
- 使用 const CString& 而不是单独使用 CString 作为函数参数是否有任何性能优势?
- C++ 成员引用基类型'Vertex *const'不是结构或联合
- 按值传递时"const"不是多余的吗?