每当我用Java编写带有更多关键字的方法时public void,每次我用另一种方式编写它.有时" static public void"有时" public static void"等.
这些关键字的最佳订单(最佳做法)是什么?
[ abstract/static] [ final] [ synchronized] [ public/private/protected] [ result_type] ???
一个问题是最近被问及是否ULL或LLU有效期为在指定C.为unsigned long long常量我知道他们俩都是有效的,但我在想,ULL将是可取的,因为它相匹配的类型unsigned long long.
但是,我现在不太确定.该gcc编译器允许毫无怨言以下几点:
int main(void) {
unsigned int a = 1;
int unsigned b = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:是int unsigned和其他变体一样long long unsigned,根据标准的有效类型?
希望这不是与 C 中“静态”函数的含义相关的许多其他问题的重复。
我们支持一些包含以下内容的传统原生 C 代码......(不要问我为什么要重新 VOID/void)
#define VOID void
#define LOCAL static
...
VOID LOCAL vLoMyMethod();
Run Code Online (Sandbox Code Playgroud)
据推测,预处理器将后者转换为
void static vLoMyMethod();
Run Code Online (Sandbox Code Playgroud)
编译器(Visual Studio 2015,大概是相对普通的标志/设置,警告级别 W3)对此似乎没问题,尽管我的理解是“静态”应该出现在返回类型说明符之前,即
static void vLoMyMethod();
Run Code Online (Sandbox Code Playgroud)
这些在语法上是否相同并且都正确?如果不是,为什么编译器会接受前者可能不正确的语法?
编辑 1
到目前为止,感谢您的回答。有趣的是,我不确定它们是否 100% 等效并且在所有情况下都可以接受,ala:
char * static vLoMyMethod1(); // compiler complains about expecting 'type' (intellisense wants an identifier)
static char * vLoMyMethod2(); // compiler is fine
Run Code Online (Sandbox Code Playgroud)