C ++语法:void CLASS functionName()?

时间:2011-08-17 05:23:30

标签: c++ syntax

我遇到了一些没有标题的独立代码。我相信它是直接的C / C ++,但我不确定。如果是这样,以下“CLASS”是什么意思?我知道这不是一个类声明或定义。这是一个名为“CLASS”的类的方法吗?

void CLASS functionName(){
  //
  //
  //
}

我习惯看到<returnType> <functionName>() {...},但不是上面的。我忘记了什么吗? (原谅我,因为我最近一直在JS和Objective-C。)

3 个答案:

答案 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"中找到了这个实例:

http://codesearch.google.com/#search/&q=%22void%20CLASS%22&type=cs&exact_package=http://rawtherapee.googlecode.com/hg/

毫不奇怪,定义是一个宏(它可能没什么别的),但它只是一个空#define。定义解释为here

    这里定义了所有全局变量,以及所有函数     访问它们的前缀是“CLASS”。注意线程安全     C ++类不能有非const静态局部变量。

至少在该项目中,它基本上用于文档目的,并且有目的地被预处理器剥离。我之前看到这样做的标记指针参数为INOUT,类似于MIDL

@EricZ已经对可能的用途进行了很好的清点。然而,我很确定这是你所看到的,因为Rawness(你的案例)和Rawtherapee之间的作者和项目名称重叠......