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 外部文件的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 外部依赖项符号错误

如何在SourceTree for Mercurial中使用Visual Studio(vsdiffmerge)作为外部差异工具?

Visual Studio:使用外部文件(不复制它们)

在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?

Visual Studio XML 外部注释文件不起作用

MSBuild、未解决的外部和 Visual Studio 2005