c - Visual Studio 打开文件夹 GCC (Cygwin) 智能感知错误
问题描述
我正在尝试将 Visual Studio Community 2019 配置为用作开发针对 Nintendo 64 的开源 C 项目的 IDE。
makefile 似乎将 gcc-derivative ( mips64-elf-gcc
) 定义为编译器,并-std=gnu99
作为其中之一CFLAGS
,所以我认为这意味着这是 C99。
我对 C 开发不太了解,所以我最初遵循了一个教程,该教程指导我设置 Cygwin。有一段时间,我在 Notepad++ 中编辑了 *.h 和 *.c 文件,然后使用 Cygwin 终端编译了所有内容(可能有上千种更好的方法,但我是 C/*nix nub,只是想弄点东西迅速落地)。Notepad++ 只是为了修补一些东西是可以的,但我对这个项目越来越认真,在 Notepad++ 中做任何真正的工作都是一件很麻烦的事情。我已经使用 Visual Studio 很长时间了,所以我想我会尝试在那里进行设置,因为我知道它支持 C/C++。
我已经成功地让 VS 使用“打开文件夹”功能并通过连接 CppProperties.json 和 tasks.vs.json 文件中的必要数据来运行我的 makefile。然而,在尝试让 IntelliSense 工作时,我遇到了一些我无法解决的错误。
1. stdio.h 和 string.h 中的“重复参数名称”
此错误有多个实例。问题似乎是这样的行:
FILE * freopen (const char *__restrict, const char *__restrict, FILE *__restrict);
如您所见,有多个“参数”都命名为__restrict
. 我仍然刚刚开始我的 C 之旅,所以我不完全确定这是什么,但我怀疑它不是参数名称,但可能会被#define
编辑。使用 Agent Ransack 文件搜索实用程序,我查找了一些实例#define __restrict
并确实找到了一些。我将这些路径添加到INCLUDE
我的 CppProperties.json 文件的部分,但这根本没有帮助。
根据 VS Open Folder 教程,IntelliSense 有时会挂在预处理器指令上,所以我添加了推荐的 cpp.hint 文件,关闭 VS,删除 .vs 文件夹中的缓存数据,然后启动 VS 备份,但错误仍然存在坚持。
2. stdio.h 中的“预期为 ')'”
我认为这也与该__restrict
问题有关。
FILE * fopen (const char *__restrict _name, const char *__restrict _type);
^
| expected a ')'
出于某种原因,它似乎对 _name 参数不满意。
3. 在我的 for 循环中“预期表达式/标识符“i”是未定义的”
我一直在处理for
定义循环的代码中的任何位置,我都会收到这些错误。以下是错误示例:
void v(void)
{
for (int i = 0; i < 25; i++)
{ ^ ^
| | identifier "i" is undefined
|
| expected an expression
}
}
但是,如果我将循环更改为以下,一切都很好。
void v(void)
{
int i;
for (i = 0; i < 25; i++)
{
}
}
它不喜欢int
for 循环的 init 表达式中的类型声明。我不确定我可以在配置中做些什么来破坏核心语言功能。我认为有关先前错误的某些内容正在影响这一点。
这些都不会影响构建过程,因为所有这些仍然是使用我在 Cygwin 中设置的所有内容通过 makefile 完成的,所以我想修复这些问题并不重要,但这样做的全部意义在于有一个很好的工作环境,并且经常出现 61 个错误可能会对这种情况产生很大的影响。
我已经尝试了我能想到的一切来解决这些问题,但没有任何效果。这对谷歌来说是一个特别困难的问题,因为搜索词需要大量潜在的影响因素,所以这并没有被证明是有效的。
任何帮助或建议表示赞赏。
解决方案
推荐阅读
- operating-system - 操作系统中的单页页面大小
- javascript - 使用 JS 在新页面上使用上一页的信息
- r - 我无法重新安装我错误删除的包“datasets”(默认 R 数据集)
- vb.net - EWS Oauth 登录过期,每次应用启动都要登录
- php - 选择总和在 php 和 mysqli 中不起作用
- window.location - 如何在codeandbox.io 中使用window.location.href?
- android - 我在这段代码中正确使用 LiveData 吗?(作品)
- javascript - 温度转换器给了我 NaN
- azure-ad-b2c - 如何将用户添加为来自另一个 IDP 的成员?
- c# - 如何将 HTML 解析为带有样式的文本