相关疑难解决方法(0)

为什么从字符串常量到'char*'的转换在C中有效,但在C++中无效

C++ 11标准(ISO/IEC 14882:2011)在§ C.1.1:

char* p = "abc"; // valid in C, invalid in C++
Run Code Online (Sandbox Code Playgroud)

对于C++来说,没关系,因为指向String Literal的指针是有害的,因为任何修改它的尝试都会导致崩溃.但为什么它在C中有效?

C++ 11还说:

char* p = (char*)"abc"; // OK: cast added
Run Code Online (Sandbox Code Playgroud)

这意味着如果将强制转换添加到第一个语句,它将变为有效.

为什么转换使第二个语句在C++中有效?它与第一个语句有什么不同?它不是仍然有害吗?如果是这样的话,为什么标准说它没关系?

c c++ string char c++11

137
推荐指数
4
解决办法
12万
查看次数

PyArg_ParseTupleAndKeywords如何工作?

我一直在努力学习如何为Python编写C扩展,并希望确定我理解PyArg_ParseTupleAndKeywords的工作原理.

我相信第一个参数是一个PyObject指针,它指向一个参数数组,这些参数按照它们传递的顺序传递给C-extension函数.第二个参数是传递的关键字列表,它们被传递的位置,以及非常可能的某种指示标记,告诉关键字开始和位置变得无关紧要.

然后,PyArg_ParseTupleAndKeywords使用其关键字列表(第四个参数)来映射用关键字指定的参数,以及格式字符串(第三个参数)和应该复制适当值的C变量(第五个和+参数)的地址.

我的理解是否正确?当我阅读在线文档时,我所看到的只是对"位置参数和关键字参数"的引用,这让我感到有些不知所措.处理PyArg_ParseTupleAndKeywords的Python解释器的文件在哪里?

python python-c-api python-c-extension

17
推荐指数
2
解决办法
6176
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

char ×1

python ×1

python-c-api ×1

python-c-extension ×1

string ×1