|
|
1
11
“除了想要错误代码”? 你怎么会这么想 是 a另外。错误代码几乎是唯一的原因。函数需要某种方法来指示失败。C没有异常,因此它必须通过指针参数或返回值来实现,并且返回值是惯用的,在调用函数时更容易检查。
(顺便说一句,没有普遍的规则
|
|
|
2
2
我想到两个原因。 首先是错误代码。除了C++之外,C没有例外,COM是C-API。此外,许多基于C++的项目出于各种原因不喜欢使用异常。 其次,函数只能有一个返回值,但调用它们可能会创建多个对象。如果使用非空指针调用这些函数,则某些Win32 API函数将多个指向指针的指针视情况填充。如果返回值是包含多个指针的structby值,则不能返回两个指针,或者更确切地说,这将很难使用。在这里,一致的API也是一个明智的目标。 |
|
|
3
1
传递的函数参数中的新对象
对于产生的错误代码,这是更好的 . |
|
|
4
1
这是有原因的。其中之一是编写一个在C中可用的接口(您可以在WinAPI和windowscom中看到这一点)。
或者(更好):
|
|
|
5
0
我不确定我是否同意这是最好的方法。。。这样可能更好:
这样就不必纠结于双重间接寻址(对于不习惯它的人来说,这可能有点棘手),而不关心结果代码的人根本不必担心第二个参数。。。他们可以检查返回值是否为NULL。
|
|
|
6
0
COM调用中的任何方法调用 必须是 |
|
|
7
0
没有回答你的问题,而是一个评论,因为你的问题带来了一些我对COM/DCOM编程使用C++的想法。 所有这些“指针”和“指针指针”、内存管理和引用计数是我不敢用C++进行COM编程的原因。即使有ATL,我也不喜欢它,原因很简单,它看起来不够自然。说到这里,我确实用ATL做了一些项目。
今天,我会用C。 |