解决在VSCode里刷Leetcode的重定义问题

解决在VSCode里刷Leetcode的重定义问题

背景最近刷了几道 Leetcode,感觉没有补全写得太不舒服了,所以用 Leetcode 官方插件搭配 VSCode 写,用 xmake 构建,用 clangd 提供代码补全,写起来体验很好,但是还是有一个小问题

问题比如以下默认代码

// Definition for a binary tree node.

// struct TreeNode {

// int val;

// TreeNode *left;

// TreeNode *right;

// TreeNode() : val(0), left(nullptr), right(nullptr) {}

// TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

// TreeNode(int x, TreeNode *left, TreeNode *right)

// : val(x), left(left), right(right) {}

// };

class Solution {

public:

bool isValidBST(TreeNode *root) {}

};它会把TreeNode给注释掉,如果想在写的时候有补全就不能注释,但是不注释提交的时候就会报 redefinition 的错误,因此只能写的时候不注释,提交的时候注释掉,但是这样一点都不优雅,因此我想到了宏的方法

实现因为我用的是 xmake,它用 lua 脚本作为配置文件我只需要加一行预定义宏

add_rules("mode.debug", "mode.release")

target("src")

set_kind("static")

add_files("src/*.cpp")

add_defines("LOCAL") //加入这个生成新的compile_commands

xmake project -k compile_commands然后再把上面的代码改成

#ifdef LOCAL

using namespace std;

// Definition for a binary tree node.

struct TreeNode {

int val;

TreeNode *left;

TreeNode *right;

TreeNode() : val(0), left(nullptr), right(nullptr) {}

TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

TreeNode(int x, TreeNode *left, TreeNode *right)

: val(x), left(left), right(right) {}

};

#endif

class Solution {

public:

bool isValidBST(TreeNode *root) {}}就可以做到想要的效果了

相关推荐

剑灵昆仑武器三种更换方案造价对比解析
365bet亚洲

剑灵昆仑武器三种更换方案造价对比解析

📅 06-14 👁️ 8499
万网域名注册怎么样?
365流水不够不能提现

万网域名注册怎么样?

📅 08-28 👁️ 7466
移动之家可以取消吗 移动之家是什么意思啊?
365流水不够不能提现

移动之家可以取消吗 移动之家是什么意思啊?

📅 07-17 👁️ 8679