我想使标题.h
中的函数顺序与源文件.cpp
中的函数顺序一致。
B.h
class B{
void f2(); //<--- wrong order
void f1();
};
B.cpp
#include "B.h"
void B::f1(){}
void B::f2(){}
预期结果(B.h)
class B{
void f1(); //<---- nice
void f2();
};
主要问题: Visual Studio中是否有(半)自动方式(.cpp -> .h
)?
热键?脚本?插入? Visual AssistX / Resharper?
有a similar question,但它的方式相反(它没有解决方案)
次要问题:如何自动执行相反的方式(半)? (.h -> .cpp
)
这是一个基本功能。它应该存在,对吧? 否则,专家将如何处理这种疾病?他们是手动移动吗?
修改
所有这三个答案都表明没有这种自动方式,但我仍然希望有这样的方式。
答案 0 :(得分:4)
正如另一个答案所指出的那样,似乎没有任何自动方式可以做你想做的事。
但是,您可以按照编码标准更轻松地完成此过程。
首先,你问:
主要问题:在Visual Studio中是否有(半)自动方式(.cpp - &gt; .h)?热键?插件?
我认为这不是正确的做法。您不希望.cpp文件的布局来驱动.h文件的布局。 .h文件是界面。制作.h文件的布局,使其对您和您的用户有意义。然后确保.cpp文件的布局方式与.h文件相关。
这是.h文件的一个布局,对我来说很有意义。
//---------------------------------------------------------------------
/*!
\file MyClass.h
Copyright Notice
...
\author Your Name
\date 2017-Mar-01
*/
//---------------------------------------------------------------------
#pragma once
#ifndef MyClass_H
#define MyClass_H
// ********** BEGIN STANDARD INCLUDES **********
// ********** END STANDARD INCLUDES **********
// ********** BEGIN EXTERN DECLARATIONS **********
// ********** END EXTERN DECLARATIONS **********
// ********** BEGIN FORWARD DECLARATIONS **********
// ********** END FORWARD DECLARATIONS **********
// ********** BEGIN TYPEDEF DEFINITIONS **********
// ********** END TYPEDEF DEFINITIONS **********
// ********** BEGIN MACRO DEFINITIONS **********
// ********** END MACRO DEFINITIONS **********
// ********** BEGIN ENUM DEFINITIONS **********
// ********** END ENUM DEFINITIONS **********
/*!
\class MyClass
This class does this and that.
*/
class MyClass
{
public:
protected:
private:
};
// ********** BEGIN INLINE FUNCTIONS **********
// ********** END INLINE FUNCTIONS **********
// ********** BEGIN EXTERN FUNCTIONS **********
// ********** END EXTERN FUNCTIONS **********
#endif
相应的.cpp文件的布局:
//---------------------------------------------------------------------
/*!
\file MyClass.cpp
Copyright Notice
...
\author Your Name
\date 2017-Mar-01
*/
//---------------------------------------------------------------------
#include "MyClass.h"
// ********** BEGIN STANDARD INCLUDES **********
// ********** END STANDARD INCLUDES **********
// ********** BEGIN EXTERN DECLARATIONS **********
// ********** END EXTERN DECLARATIONS **********
// ********** BEGIN STATIC DECLARATIONS **********
// ********** END STATIC DECLARATIONS **********
// ********** BEGIN EXTERN DEFINITIONS **********
// ********** END EXTERN DEFINITIONS **********
// ********** BEGIN HELPER CLASSES **********
// Namespace for helper classes and functions used in the file.
namespace MyClassNS
{
}
using namespace MyClassNS;
// ********** END HELPER CLASSES **********
// ********** BEGIN PUBLIC FUNCTIONS **********
// ********** END PUBLIC FUNCTIONS **********
// ********** BEGIN PROTECTED FUNCTIONS **********
// ********** END PROTECTED FUNCTIONS **********
// ********** BEGIN PRIVATE FUNCTIONS **********
// ********** END PRIVATE FUNCTIONS **********
使用这样的布局,可以更容易确保.cpp文件中遵循.h文件中出现的函数声明的顺序。
PS 您不需要在代码中使用Doxygen样式标记,除非您使用它来自动生成文档。
答案 1 :(得分:4)
这只是我的意见!
由于以下原因,不能有这样的功能:
排序* .h文件导致混合public,protected和private方法,更好的方法是将这些部分分开,然后立即看到哪个group方法属于。
您应该告诉您要排序的* .h文件,因为在一个* .cpp中,您可以定义多个类,这些类在多个* .h文件中声明。
您应该告诉哪个* .h文件要排序,因为* .cpp文件可以有不同的名称trom * .h
答案 2 :(得分:3)
没有按钮或快捷方式。您只需使用剪切移动或正常方式手动移动它,即选择代码并将其拖动到所需位置。