问题描述
我正在尝试将 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 (将#修改为@)