c++ - 在纯 C 中使用 `this` 关键字

标签 c++ c

我习惯用 C++ 编程。我喜欢面向对象的东西和语言提供的东西。 但现在我必须使用普通 C 进行编程,因为我必须使用不支持 C++ 编译器的嵌入式系统,只能使用普通 C。

我想保留“面向对象”的功能,因此我通常这样写我的模块:

//Maybe hidden with PIMPL...
typedef struct myModuleData_
{
}myModuleData;

myModuleData* moduleCreate();
void moduleFree(myModuleData *this_);

void moduleSetSomething(myModuleData *this_, int something);

现在我的问题是:我可以用 this 替换 this_ (没有最后的下划线)吗?如果我在 C++ 中通过将此模块与 extern "C"一起使用,那么在纯 C 中使用 this 是否会在将来干扰 C++?

最佳答案

不,您不能这样做,因为 this 是 C++ 中的保留字。它不能用作普通参数的名称。

您可以从 header 中删除名称并将其保留在 C 文件中,但这当然意味着使 header 稍微更糟,因为它不再包含该参数的含义提示。

关于c++ - 在纯 C 中使用 `this` 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42807542/

相关文章:

c++ - 为什么 11==011 返回 false?

c++ - 使用 SFINAE 在 C++ 中强制类型转换

c - 使用 OpenSSL 的客户端/服务器程序的文档

c - 通过 libvirt 将文件描述符传递给 qemu (C api)

C++:头文件中结构的 vector

c++ - windows中atoi和atol的区别

c - curl/curl.h、libcurl、libcurl4-openssl-dev、libcurl4-nss-dev 库之间的区别?

c - 在C中访问Excel工作表单元格属性

c++ - ARM架构中C函数如何返回大小超过一个字的值

c++ - 将派生对象地址分配给基指针和调用析构函数的机制