我遇到了一些没有标题的独立代码。我相信它是直接的C / C ++,但我不确定。如果是这样,以下“CLASS”是什么意思?我知道这不是一个类声明或定义。这是一个名为“CLASS”的类的方法吗?
void CLASS functionName(){
//
//
//
}
我习惯看到<returnType> <functionName>() {...}
,但不是上面的。我忘记了什么吗? (原谅我,因为我最近一直在JS和Objective-C。)
答案 0 :(得分:4)
虽然它不是常见的AFAIK,但可能是CLASS是如下的宏。由于它的名称是CLASS
,我认为它更可能是一个类或命名空间的宏。
<强> 1。班级名称
class A
{
void functionName();
};
#define CLASS A::
void CLASS functionName()
{}
<强> 2。命名空间强>
namespace A
{
void functionName();
};
#define CLASS A::
void CLASS functionName()
{}
第3。致电转换
// or __cdecl, etc.
define CLASS __stdcall
<强> 4。其他强>
可能有其他语句(例如指针的宏)在语法上是正确的,但在你的情况下它们不太可能。或者它可能只是一个评论,正如Hostile在下面指出的那样。
答案 1 :(得分:2)
这绝对不是标准的C或C ++,因为只有少数事情可以合法地介于void
和函数名称之间(例如,一个星号,以使返回类型{{1 }})。这可能是某些编译器扩展或外部工具正在使用的宏。如果没有关于您在何处找到此代码的更多信息,我认为我不能提供更多信息;你在哪里找到这个?
答案 2 :(得分:1)
我使用了Google的代码搜索(有时会派上用场),并在"rawtherapee"中找到了这个实例:
毫不奇怪,定义是一个宏(它可能没什么别的),但它只是一个空#define
。定义解释为here:
这里定义了所有全局变量,以及所有函数 访问它们的前缀是“CLASS”。注意线程安全 C ++类不能有非const静态局部变量。
至少在该项目中,它基本上用于文档目的,并且有目的地被预处理器剥离。我之前看到这样做的标记指针参数为IN
或OUT
,类似于MIDL。
@EricZ已经对可能的用途进行了很好的清点。然而,我很确定这是你所看到的,因为Rawness(你的案例)和Rawtherapee之间的作者和项目名称重叠......