希望这不是与 C 中“静态”函数的含义相关的许多其他问题的重复。
我们支持一些遗留的本地 C 代码,其中包含以下内容......(不要问我为什么要 VOID/void)
#define VOID void
#define LOCAL static
...
VOID LOCAL vLoMyMethod();
据推测,预处理器将后者转换为
void static vLoMyMethod();
编译器(Visual Studio 2015,可能是相对普通的标志/设置,警告级别 W3)对此似乎很好,即使我的阅读是“静态”应该出现在返回类型说明符之前,即
static void vLoMyMethod();
这些在语法上是否等效并且都正确?如果不是,为什么编译器接受前一种可能不正确的语法?
编辑 1
感谢您到目前为止的回答。有趣的是,我不确定它们是否 100% 等效并且在所有情况下都可以接受,ala:
char * static vLoMyMethod1(); // compiler complains about expecting 'type' (intellisense wants an identifier)
static char * vLoMyMethod2(); // compiler is fine