问题现象
创建一个标准的C语言头文件:foo.h
#ifndef _FOO_H_
#define _FOO_H_
#ifdef __cplusplus
extern "C" {
#endif
/**************************************************************************
* Include Files *
**************************************************************************/
#include "base.h"
/**************************************************************************
* Macros/Defines/Enums *
**************************************************************************/
/** @defgroup FOO_Macro
* @{
*/
/** @} */
/**************************************************************************
* Structures/Unions/Types *
**************************************************************************/
/** @defgroup FOO_PublicType
* @{
*/
/** @} */
/**************************************************************************
* Declare Global Variables *
**************************************************************************/
/** @defgroup FOO_PublicVariable
* @{
*/
/** @} */
/**************************************************************************
* Declare Functions *
**************************************************************************/
/** @defgroup FOO_PublicFunction
* @{
*/
/** @} */
/** @} */
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* _FOO_H_ */
注意:这里为了兼容C++,有以下定义:
#ifdef __cplusplus
extern "C" {
#endif
// 。。。。
#ifdef __cplusplus
}
#endif
但是,VSCode识别到了其中的大括号。会对后面的代码自动缩进。
比如,在#include后面敲回车,会自动缩进一个单位。
甚至,在#endif后面敲回车,会把注释都改乱。
解决措施
更改文件模板,添加一组大括号,骗一下VSCode:
#ifdef __cplusplus
extern "C" {
#endif
#if 0
}
#endif
//。。。。
#if 0
{
#endif
#ifdef __cplusplus
}
#endif
完美解决!