ZyLiu's Blog

从VS转移到VScode(由未找到预定义引出的问题)

字数统计: 261阅读时长: 1 min
2018/08/23 Share

作为代码编辑器的VScode

预定义

今天看到代码中有一处:

1
2
3
4
5
#if defined FF_LOG_ZZSR
#include "../VACommon/log/sr_log.h"
#elif defined FF_LOG_ZZHX
#include "../VACommon/log/HX_log.h"
#endif

搜索编整个工程却没有找到FF_LOG_ZZHX,然而其下方的#include的代码却生效了,因此感到很疑惑。

实际上是在属性 - 配置属性 - C/C++ - 预处理器定义中进行了预处理定义,这样在所有代码中都有了FF_LOG_ZZHX的预定义。

当使用VSCode打开源文件时,需要在$WorkSpace$\.vscode\c_cpp_properties.json中的defines项添加预定义。

包含文件

在添加了预定义之后,发现代码仍有问题,DEBUG_TRACE_ERROR等依赖于VACommon/log/HX_log.h的预定义仍不起作用。试验后发现还需要添加包含路径。最终的c_cpp_properties.json如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"./../VACommon/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"ZZ_DLL_EXPORTS",
"WIN32",
"ZZ_EMNLU20_DEFINED",
"FF_LOG_ZZHX"
],
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}

编译配置

此外还有很多编译相关的配置,以及makefile的配置,将在后面进行补充。

CATALOG
  1. 1. 作为代码编辑器的VScode
    1. 1.1. 预定义
    2. 1.2. 包含文件
  2. 2. 编译配置