小编Ben*_*ity的帖子

整个四个C++声明符号组的名称?

我的理解是,通常整个非字母数字字符组如*,?,;,#等可以称为标点符号.但是,在表达式中

    3*4
Run Code Online (Sandbox Code Playgroud)

*特别称为"运算符",而在类似的声明中

    int *p;
Run Code Online (Sandbox Code Playgroud)

*不是运算符,而是仅表示p是指针.类似地,在声明中使用时,3个附加符号&,[]和()不称为运算符.我知道所有这些符号在各种情况下的意义,它们如何发音以及它们的作用,但是在声明中使用时,这四个符号的整个组是否有特定的名称?由于缺乏更好的东西,我总是把它们称为"属性",而且我找不到关于该组名称的语言标准中的任何具体内容.

c++ syntax

10
推荐指数
1
解决办法
423
查看次数

奇怪的VS名称破坏行为?

考虑以下无操作代码,我在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是否也会考虑两个版本不同的重载目的.

c++ name-mangling visual-studio-2012

4
推荐指数
1
解决办法
197
查看次数

Clang-Format:如何指定自定义格式选项文件?

我正在尝试为在 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 并再次尝试,但结果是相同的。所以,我的问题是,“如何指定特定的样式选项文件?”

clang-format

4
推荐指数
1
解决办法
4183
查看次数