微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Visual Studio 打开文件夹 GCC (Cygwin) 智能感知错误

如何解决Visual Studio 打开文件夹 GCC (Cygwin) 智能感知错误

我正在尝试将 Visual Studio Community 2019 配置为用作 IDE,以处理面向 Nintendo 64 的开源 C 项目。

makefile 似乎将 gcc 派生 (mips64-elf-gcc) 定义为编译器,并将 -std=gnu99 作为 CFLAGS 之一,所以我认为这意味着这是 C99。>

我对 C 开发不太了解,所以我最初是按照教程来设置 Cygwin 的。有一段时间,我在 Notepad++ 中编辑了 *.h 和 *.c 文件,然后使用 Cygwin 终端来编译所有内容(可能有一千种更好的方法,但我是 C/*nix nub 并且只想得到一些东西地面很快)。 Notepad++ 可以用来修补一些东西,但我对这个项目越来越认真,在 Notepad++ 中做任何真正的工作都是一个真正的麻烦。我已经使用 Visual Studio 很长时间了,所以我想我会尝试在那里设置一些东西,因为我知道它支持 C/C++。

我已经成功地让 VS 使用“打开文件夹”功能运行我的 makefile,并在 CppProperties.json 和 tasks.vs.json 文件中连接必要的数据。然而,在尝试让 IntelliSense 正常工作时,我遇到了一些无法解决错误

1. stdio.h 和 string.h 中的“重复参数名称

错误有多个实例。问题似乎是这样的:

FILE *  freopen (const char *__restrict,const char *__restrict,FILE *__restrict);

如您所见,有多个名为 __restrict 的“参数”。我仍然刚刚开始我的 C 之旅,所以我不完全确定这是什么,但我怀疑它不是参数名称,而是可能被#define修改过。使用 Agent Ransack 文件搜索实用程序,我查找了 #define __restrict 的实例并确实找到了一些。我将这些路径添加到我的 CppProperties.json 文件INCLUDE 部分,但这根本没有帮助。

根据 VS 打开文件夹教程,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++)
    {

    }
}

它不喜欢 for 循环的 init 表达式中的 int 类型声明。我不确定我可以在配置中做什么来破坏核心语言功能。我认为之前的错误会影响到这一点。


这些都不会影响构建过程,因为所有这些仍然是使用我在 Cygwin 中设置的所有内容通过 makefile 完成的,所以我想解决这些问题并不重要,但这样做的重点是这是为了有一个很好的工作环境,并且不断出现 61 个错误可能会对这种情况产生很大的影响。

我已经尝试了所有我能想到的方法解决这些问题,但没有任何效果。这对谷歌来说是一个特别困难的问题,因为搜索词需要大量潜在的促成因素,所以这并没有取得成果。

感谢任何帮助或建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。