我的理解是,通常整个非字母数字字符组如*,?,;,#等可以称为标点符号.但是,在表达式中
3*4
Run Code Online (Sandbox Code Playgroud)
*特别称为"运算符",而在类似的声明中
int *p;
Run Code Online (Sandbox Code Playgroud)
*不是运算符,而是仅表示p是指针.类似地,在声明中使用时,3个附加符号&,[]和()不称为运算符.我知道所有这些符号在各种情况下的意义,它们如何发音以及它们的作用,但是在声明中使用时,这四个符号的整个组是否有特定的名称?由于缺乏更好的东西,我总是把它们称为"属性",而且我找不到关于该组名称的语言标准中的任何具体内容.
考虑以下无操作代码,我在Win10 64位上编译为C++:
int test(int argc, char *argv[]);
int main(int argc, char *argv[])
{
return test(argc, argv);
}
int test(int argc, char **argv)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果所有这些代码都放在同一个.cpp文件中,它会在VS2012,VS2013,VS2015和mingw32-g ++ v4.7.1中正确编译和链接,正如我所期望的那样.
但是,如果我只是将测试函数的定义移动到一个单独的文件中,生成的两个文件仍然可以编译并与mingw编译器正确链接,但在VS的所有版本上我得到:
error LNK2019: unresolved external symbol "int __cdecl test(int,char * * const)" (?test@@YAHHQAPAD@Z) referenced in function _main"
Run Code Online (Sandbox Code Playgroud)
我可以通过简单地改变测试功能做argv参数的声明中VS解决此问题char *argv[],但不应该是必要的,因为char *argv[]并char **argv用来声明参数时的意思完全一样的东西.
我没有尝试过,但它让我想知道VS是否也会考虑两个版本不同的重载目的.
我正在尝试为在 Windows 10 Pro 64 位上运行的 clang-format v6.0.0 配置自定义样式选项文件。我首先使用以下命令行基于 llvm 样式生成一个选项文件,该文件运行良好:
clang-format -style=llvm -dump-config > .clang-format
Run Code Online (Sandbox Code Playgroud)
clang-format 的文档说明如下:“当所需的代码格式样式与可用选项不同时,可以使用 -style="{key: value, ...}" 选项或通过放置您的项目目录中的 .clang-format 或 _clang-format 文件中的样式配置,并使用 clang-format -style=file。”
因此,作为测试,我使用了上面生成的未更改的 .clang 格式文件,并使用了以下命令行:
clang-format -style=.clang-format Test.c
Run Code Online (Sandbox Code Playgroud)
结果是一条消息说
"Invalid value for -style"
Run Code Online (Sandbox Code Playgroud)
然后我将 .clang-format 的名称更改为 _clang-format 并再次尝试,但结果是相同的。所以,我的问题是,“如何指定特定的样式选项文件?”