安装了C++扩展工具之后,我现在可以使用Ctrl+K+F自动格式化我的C++代码。然而,我想进行一些修改,例如,我希望强制指针对齐方式靠近类型而不是变量名,就像这个规则:
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
我该如何进行这个修改?我尝试创建了一个.clang-format文件,但它没有起作用。
安装了C++扩展工具之后,我现在可以使用Ctrl+K+F自动格式化我的C++代码。然而,我想进行一些修改,例如,我希望强制指针对齐方式靠近类型而不是变量名,就像这个规则:
# Force pointers to the type for C++.
DerivePointerAlignment: false
PointerAlignment: Left
我该如何进行这个修改?我尝试创建了一个.clang-format文件,但它没有起作用。
在进行了一些实验后,简单的解决方案是在用户设置(settings.json)中添加以下行:
"C_Cpp.clang_format_fallbackStyle": "{ PointerAlignment: Left}"
然而,这个设置允许我保留之前的设置而不破坏我的函数行:
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, ColumnLimit: 120, PointerAlignment: Left}"
使用“BasedOnStyle:Visual Studio”例如此行:
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Visual Studio, ColumnLimit: 120, PointerAlignment: Left}"
没有起作用。这可能是一个错误。我使用的是Visual Studio Code版本1.26.1。
另外,工作区文件夹外的.clangformat仍将被应用。因此,如果此文件损坏,则自动格式化将无法正常工作。
class Student
是一个大型结构体,比如100,000字节大小,那么一个Student
和一个指向Student
的指针之间存在很大的区别,因为指针通常是4个字节或8个字节,这取决于架构。而且这只考虑了它们在大小上的差异,没有考虑到它们在概念上是两个非常不同的东西。 - Pulseczarint *p, n;
声明 p
为 int
指针,n
为 int
。将其写成 int* p, n;
看起来似乎会产生视觉误导。我想这是主观的。 - lurkerC_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, ColumnLimit: 120, PointerAlignment: Left}
)粘贴函数时,例如复制以下内容并在\n
处换行(因为StackOverflow不允许在注释中换行):
void func(int& var) {\n return;\n }
并粘贴后,VSCode似乎会将其全部粘贴到一行中:
void func(int& var) { return; }
使用“Ctrl+Z”撤消一次可以在粘贴后修复此问题,但您必须每次都这样做。 - CreativiTimothy我使用clang-format,它集成得非常好并且可配置性很高。请查看https://code.visualstudio.com/docs/cpp/cpp-ide#_code-formatting
Ctrl
+K
+F
(格式化)和Ctrl
+K
,F
(关闭目录)。 - nomad