在普通C中使用`this`关键字 我习惯用C++编程。我喜欢面向对象的东西和语言提供的东西。 但是现在我必须在C语言中编程,因为我必须使用一个不支持C++编译器的嵌入式系统,只需简单的C.

在普通C中使用`this`关键字 我习惯用C++编程。我喜欢面向对象的东西和语言提供的东西。 但是现在我必须在C语言中编程,因为我必须使用一个不支持C++编译器的嵌入式系统,只需简单的C.,c++,c,C++,C,我想保留usign“面向对象”函数,因此我通常编写如下模块: //Maybe hidden with PIMPL... typedef struct myModuleData_ { }myModuleData; myModuleData* moduleCreate(); void moduleFree(myModuleData *this_); void moduleSetSomething(myModuleData *this_, int something); 现在我的问题是:我可以用

我想保留usign“面向对象”函数,因此我通常编写如下模块:

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

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

void moduleSetSomething(myModuleData *this_, int something);

现在我的问题是:我可以用
这个
替换
这个
(没有最后的下划线)吗?如果C++中使用C++中的这个模块,使用外部的“C”,那么< <代码> > < C++ >,是否会干扰未来?它不能用作普通参数的名称


您可以从标题中删除该名称并将其保留在C文件中,但这当然意味着页眉稍微变差,因为它不再包含该参数的含义。

< P>不,您不能这样做,因为<代码> < < /C> >是C++中的保留字。它不能用作普通参数的名称


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

从函数声明中删除
,确保模块本身始终使用C编译器编译,您可以使用
this
作为模块内对象的标识符。您也可以使用
self
,当您需要显式
this
@StoryTeller时,这是其他语言中常用的一种,这篇文章是主观胡说八道。世界上绝大多数程序员都喜欢使用typedef。对于C++程序员或C和C++编程人员来说,这一点尤其正确。出于主观和非理性的原因,Linux世界不喜欢使用typedef。这完全是一个风格问题。在这里,没有必要在C++之前对一种风格进行说教,尤其是在与初学者打交道时。@ I86- C和C++标准有一组难以记住的关于保留标识符的规则,当涉及到一个主要的下划线时。许多人只是不喜欢打开那罐蠕虫,而避免使用下划线。@StoryTeller Linux内核编码风格指南总体上是一份业余水平的文档,缺乏来源、科学证据和理论依据。这一切都是Linux迷和其他C编程世界之间的一场众所周知的战争。这里不需要样式战。请从函数声明中删除
this
,确保模块本身始终使用C编译器编译,并且使用
this
作为模块内对象的标识符不会有任何问题。您也可以使用
self
,当你需要明确的
这篇
@StoryTeller的文章是主观的胡说八道时,这篇文章通常在其他语言上使用。世界上绝大多数程序员都喜欢使用typedef。对于C++程序员或C和C++编程人员来说,这一点尤其正确。出于主观和非理性的原因,Linux世界不喜欢使用typedef。这完全是一个风格问题。在这里,没有必要在C++之前对一种风格进行说教,尤其是在与初学者打交道时。@ I86- C和C++标准有一组难以记住的关于保留标识符的规则,当涉及到一个主要的下划线时。许多人只是不喜欢打开那罐蠕虫,而避免使用下划线。@StoryTeller Linux内核编码风格指南总体上是一份业余水平的文档,缺乏来源、科学证据和理论依据。这一切都是Linux迷和其他C编程世界之间的一场众所周知的战争。我们这里不需要风格之争,明白了。我将使用
self
,正如有人在另一条评论中所说。@LoPiTaL
self
相当于Objective-C中的
this
。但是,它不是一个保留字,而只是一个隐式定义的参数,因此您不会遇到同样的问题。好的,明白了。我将使用
self
,正如有人在另一条评论中所说。@LoPiTaL
self
相当于Objective-C中的
this
。但是,它不是一个保留字,而只是一个隐式定义的参数,因此您不会遇到同样的问题。