Visual Studio 代码 C 外部文件
Posted
技术标签:
【中文标题】Visual Studio 代码 C 外部文件【英文标题】:Visual studio code C external files 【发布时间】:2021-11-22 15:47:39 【问题描述】:每当我尝试在同一文件夹的另一个 .c 文件中使用 extern 变量时,或者如果我想使用外部函数时,我都会收到错误:ld 返回 1 退出状态
如果我尝试将 eclipse 用于同一个示例,它可以正常工作
【问题讨论】:
请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:在使用(外部)变量之前,您必须先声明它,然后定义它。
示例
在头文件中声明 var,例如foo.h:
extern int my_extern_var; //declaration (extern)
在源文件中定义它,例如foo.c:
#include "foo.h" //include the declaration
int my_extern_var; //definition
然后在任何其他源文件中使用它: (即使 foo 是一个库并链接到下面的程序)
#include <stdio.h>
#include "foo.h" //include the declaration
int main()
my_extern_var = 42; //usage of 'global' var
printf("%d\n", my_extern_var);
return 0;
参考:
Storage-class specifiers (cppreference.com)【讨论】:
我仍然收到错误:(未定义对 'my_extern_var' 的引用)另外,当我在 eclipse 中使用 extern 时,我不需要头文件,它只需要两个在 main 中提到 extern 变量的源文件即可将引用 other.c 文件 要么在头文件中声明它并将它包含在要使用的地方,要么在每个源文件中声明它。关键是,它必须在某处声明为 extern 并在其他地方定义,var 也可以同时声明和定义,如extern int my_extern_var = 42;
。检查您的来源、声明的位置和定义的位置。也许,你给我们看一些代码?以上是关于Visual Studio 代码 C 外部文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在SourceTree for Mercurial中使用Visual Studio(vsdiffmerge)作为外部差异工具?