0


vscode添加预编译宏定义

vscode添加预编译宏定义

前言

网上针对vscode中的预定义宏,有两种理解:

  1. 预定义宏 xxx ,使 #ifdef xxx 后的代码块能够高亮,而#ifndef xxx 后的代码块变暗
  2. 预定义宏 xxx ,使得实际运行的代码识别到 xxx已宏定义,即 xxx=1

两种有本质区别,简要地说,第一种改变vscode的配置解析文件,第二种直接作用于编译器

一、intellisense 非活动区变暗

即第一种,具体操作如下

  1. Ctrl + shift + P打开设置 输入 preference 打开设置,或者在客户端界面左下角打开设置
  2. 设置中搜索 Dim Inactive Regions 勾选选项C_Cpp: Dim Inactive Regions
  3. 设置中搜索 Inactive Region Opacity ,打开settings.json,添加配置"C_Cpp.inactiveRegionOpacity": 0.55 ,数值为0-1。
  4. 设置中搜索 C/C++: Edit Configurations ,在以下位置添加需要预定义的变量,也可在.vscode\c_cpp_properties.json中"defines": [ “WIN32” ],内添加c/c++ UI配置

二、编译器预编译宏定义

以gcc为例
gcc -Dxxxx 相当于 C 语言中的 #define xxxx
这里是将 file 文件的宏, 扩展到 gcc/g++ 的输入文件, 宏定义本身并不出现在输入文件中。
在vscode中,task.json文件内可以针对gcc添加编译命令,具体包括添加附加依赖项、预编译宏定义等

{"tasks":[{"type":"cppbuild","label":"C/C++: gcc.exe 生成活动文件","command":"D:/Program Files (x86)/mingw64/bin/gcc.exe","args":["-fdiagnostics-color=always","-g","${workspaceFolder}\\src\\*.c","${workspaceFolder}\\src\\rcv\\*.c","-DENACMP","-DENAGLO","-DENAGAL","-lwinmm","-lws2_32","-o","${fileDirname}\\${fileBasenameNoExtension}.exe",""],"options":{"cwd":"D:/Program Files (x86)/mingw64/bin"},"problemMatcher":["$gcc"],"group":{"kind":"build","isDefault":true},"detail":"调试器生成的任务。"}],"version":"2.0.0"}

三、总结

  • 如果既需要在vscode中使#ifndef xxx后的代码块变暗,又需要在实际运行代码时确保xxx预编译宏定义,则两种操作都需要执行。如果只对第一种问题进行配置,则实际过程中,虽然在鼠标移到该变量上会显示#define xxx 1,但实际代码中 打印或者计算时都仍然是xxx=0
  • 前后遇到多次这种问题,相较于VS,vscode许多配置需要自己摸索和设置,因此这里简单吧这种问题罗列一下,针对文章中的一些可能出现的问题请谅解并指出。

参考
[1]:https://www.runoob.com/w3cnote/gcc-parameter-detail.html
[2]: https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference
[3]:https://blog.csdn.net/weixin_43862847/article/details/116116589

标签: vscode ide 编辑器

本文转载自: https://blog.csdn.net/BaLa_Boom/article/details/131792585
版权归原作者 BaLa_Boom 所有, 如有侵权,请联系我们删除。

“vscode添加预编译宏定义”的评论:

还没有评论