基本上,我在C中有一个内联函数:
struct array {
unsigned long size;
void* items;
};
typedef struct array* Array;
inline Array array_create(unsigned long initsize);
inline void array_free(Array this);
Run Code Online (Sandbox Code Playgroud)
我是否可以this在这种情况下自由使用关键字,或者更好地避免它,以及为什么(不是)?
编辑:这个问题起源于我使用的代码中的一个错误,inline void array_free(Array array);它改变了结果sizeof(array);并给了我使用的想法,this而不是适应(在我看来丑陋)sizeof(struct array);.
this以任何方式使用你想要的是完全有效的C.
你有什么要问自己,这些适用于任何C++保留字喜欢的方式class,final等等,就是:
this为关键字的程序来传达错误信息?例如,this即使您在.c文件中,Visual Studio 也会突出显示,因此可能会出现一些混淆.既然this是可以避免的东西我发现使用它不道德但不正确.
我不是说你必须在编写C之前学习C++,但是一旦你知道了什么,那么充分利用它就是一个好习惯.
您可能导致的一个微妙问题是使您的代码从C++中"不可调用",例如a
#define this some_definition
Run Code Online (Sandbox Code Playgroud)
在C头文件中,后来包含在C++中可能会对您的代码产生奇怪的影响.
不在this标准C中使用的原因是它使您的代码:
thisC++中"众所周知"的使用,可读性稍差.您的代码看起来好像是C++,而不知情的读者很容易混淆.