鱼C论坛

 找回密码
 立即注册
查看: 1645|回复: 10

[已解决]VScode中extern使用

[复制链接]
发表于 2023-11-24 13:21:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题
最佳答案
2023-11-24 13:34:10
六翻了 发表于 2023-11-24 13:33
我在VScode中使用你给出的代码,并且将
int count =  ...

你遇到的问题是链接错误。在使用extern关键字时,需要确保所有被引用的变量或函数在链接阶段能够找到其定义。

首先,确保你在VScode中正确配置了文件的编译和链接选项。您可以使用GCC编译器进行编译和链接,如下所示:

1. 在VScode中打开终端(Terminal)。
2. 确保你的C代码文件(main.c和other.c)在当前工作目录中。
3. 输入以下命令进行编译和链接:gcc main.c other.c -o output

这里的`output`是你给输出可执行文件的名称。

如果以上步骤都正确执行,应该能够成功编译和链接代码,并生成可执行文件。

如果还是遇到链接错误,可能是因为编译器无法找到定义count变量的文件。请确保以下几点:

1. 确保定义count变量的文件(例如other.c)与主程序文件(例如main.c)在同一个目录中。
2. 检查定义count变量的文件是否被正确命名和保存为.c文件。
3. 如果你的代码分布在多个文件夹中,请指定正确的路径来标识其他文件。

如果你还是无法解决问题,可以尝试将完整的代码和错误信息提供给我,我会尽力帮助你解决问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-24 13:22:20 | 显示全部楼层
在C/C++编程中,extern关键字用于声明一个全局变量或函数,表示该变量或函数并非在当前文件中定义,而是在其他文件中定义。这样就可以在当前文件中使用该变量或函数。

下面是一个例子,说明如何使用extern关键字:

假设我们有两个源文件:main.c和other.c。

main.c:
#include <stdio.h>// 声明一个全局变量extern int count;int main() {    // 使用全局变量    printf("count = %d\n", count);    return 0;}
other.c:
// 定义一个全局变量int count = 10;
在上面的代码中,main.c中使用了extern关键字来声明全局变量count,而other.c中定义了该全局变量。当编译运行main.c时,它会查找并使用other.c中定义的count变量。

编译和运行这段代码,你可以得到输出:
count = 10
这是因为在main.c中使用了extern关键字声明了count变量,它实际上引用了other.c中定义的count变量。

另外需要注意的是,extern关键字只是告诉编译器这个变量或函数存在,但并不分配内存空间。实际上的内存分配是在定义变量或函数的文件中进行的。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-24 13:22:27 | 显示全部楼层
试下GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 13:22:41 | 显示全部楼层

很抱歉,由于技术限制和平台政策,我无法执行GPT相关功能。GPT(Generative Pre-trained Transformer)是一个自然语言处理模型,用于生成文本并回答问题。它需要庞大的计算资源和训练数据来实现。如果你对GPT感兴趣,可以在云平台或者自己的机器上使用预训练好的GPT模型进行自然语言处理任务。你可以查阅相关资料了解如何使用GPT模型进行文本生成和问题回答。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 13:24:10 | 显示全部楼层
在VSCode中使用extern关键字

在C/C++中,extern关键字用于声明变量或函数是在其他文件中定义的。下面是在VSCode中使用extern关键字的步骤:

1. 创建多个源文件,每个源文件都包含需要使用的全局变量或函数的声明。
2. 在其中一个源文件中定义全局变量或函数的实现。
3. 在其他源文件中使用extern关键字来声明这些变量或函数。

以下是一个简单的例子来说明如何在VSCode中使用extern关键字:

示例:

假设我们有两个源文件foo.cbar.c,我们要在bar.c中使用在foo.c中定义的全局变量。

1. 创建foo.c文件并定义一个全局变量:
// foo.cint global_var = 10;
2. 创建bar.c文件并使用extern关键字声明该全局变量:
// bar.cextern int global_var; // 声明变量global_var是在其他文件中定义的#include <stdio.h>int main() {    printf("Global variable value: %d\n", global_var);    return 0;}
3. 在VSCode中打开这两个源文件,并进行编译和运行。

你可以使用VSCode提供的任务(Tasks)功能来配置编译和运行操作。在项目根目录下创建.vscode文件夹,并在该文件夹下创建tasks.json文件。

[/code]json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "gcc foo.c bar.c -o myprogram",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
[/code]

保存并关闭tasks.json文件。然后,你可以使用快捷键Ctrl + Shift + B来编译源文件。

4. 运行程序:

在终端或命令行中输入以下命令运行生成的可执行文件:

[/code]
./myprogram
[/code]

程序将输出全局变量的值:

[/code]
Global variable value: 10
[/code]

以上就是在VSCode中使用extern关键字的基本步骤。你可以根据需要在多个源文件中声明和定义全局变量或函数,并使用extern关键字来进行引用。

希望以上内容对你有帮助。如果你还有其他问题,请随时提问。

回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-24 13:33:45 | 显示全部楼层
FishC_GPT 发表于 2023-11-24 13:22
在C/C++编程中,extern关键字用于声明一个全局变量或函数,表示该变量或函数并非在当前文件中定义,而是在 ...

我在VScode中使用你给出的代码,并且将
int count = 10;
放入另一个.c文件中
编译器给出下面的结果
undefined reference to `count'
collect2.exe: error: ld returned 1 exit status
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 13:34:10 | 显示全部楼层    本楼为最佳答案   
六翻了 发表于 2023-11-24 13:33
我在VScode中使用你给出的代码,并且将
int count =  ...

你遇到的问题是链接错误。在使用extern关键字时,需要确保所有被引用的变量或函数在链接阶段能够找到其定义。

首先,确保你在VScode中正确配置了文件的编译和链接选项。您可以使用GCC编译器进行编译和链接,如下所示:

1. 在VScode中打开终端(Terminal)。
2. 确保你的C代码文件(main.c和other.c)在当前工作目录中。
3. 输入以下命令进行编译和链接:gcc main.c other.c -o output

这里的`output`是你给输出可执行文件的名称。

如果以上步骤都正确执行,应该能够成功编译和链接代码,并生成可执行文件。

如果还是遇到链接错误,可能是因为编译器无法找到定义count变量的文件。请确保以下几点:

1. 确保定义count变量的文件(例如other.c)与主程序文件(例如main.c)在同一个目录中。
2. 检查定义count变量的文件是否被正确命名和保存为.c文件。
3. 如果你的代码分布在多个文件夹中,请指定正确的路径来标识其他文件。

如果你还是无法解决问题,可以尝试将完整的代码和错误信息提供给我,我会尽力帮助你解决问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-24 13:40:17 | 显示全部楼层
FishC_GPT 发表于 2023-11-24 13:34
你遇到的问题是链接错误。在使用extern关键字时,需要确保所有被引用的变量或函数在链接阶段能够找到其定 ...

两个.c文件位于同一目录下,在终端输入命令后,生成了output.exe执行文件,之后要怎么操作?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 13:40:36 | 显示全部楼层
六翻了 发表于 2023-11-24 13:40
两个.c文件位于同一目录下,在终端输入命令后,生成了 ...

在终端中生成了名为output.exe的可执行文件后,你可以按照以下步骤操作:1. 在终端中输入以下命令来运行可执行文件:./output.exe这将会执行output.exe文件并输出结果。2. 如果你在代码中使用了输入(例如scanf)函数,程序将等待用户输入数据。输入完成后按下Enter键,程序将继续执行并输出结果。3. 当程序运行完毕后,结果将被显示在终端中。注意:在Windows系统中,可执行文件的扩展名通常为.exe,所以在命令行中需要使用输出文件的正确扩展名来运行可执行文件(如output.exe)。如果你在其他操作系统上运行,可能需要使用不同的命令来执行可执行文件。以上就是在终端中运行可执行文件的基本步骤。如果你还有其他问题,请随时告诉我。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-24 13:42:34 | 显示全部楼层
GPT表现很好,就是得一步一步来问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 13:43:04 | 显示全部楼层
六翻了 发表于 2023-11-24 13:42
GPT表现很好,就是得一步一步来问

是的,GPT确实是一个强大的自然语言处理模型。由于其复杂性和资源需求,一步一步地提问是很有效的方法。你可以先明确你希望GPT回答的问题是什么,然后逐渐提供相关的问题细节,以获得更准确的答案。

在与GPT交互时,可以按照以下步骤进行:

1. 准备一个问题或主题,并确保将其清晰地表达出来。
2. 向GPT提出问题并等待它的回答。
3. 根据GPT的回答,进一步追问、澄清或提供更多的上下文信息。
4. 重复上述步骤,直到获得满意的答案。

因为GPT是基于大规模训练的模型,所以它的回答是根据之前的文本数据进行生成的。所以,提供更多的上下文信息有助于GPT更好地理解你的问题并给出准确的回答。

记住,尽管GPT能够生成文本,但它并不是万能的。在使用GPT时,要注意对结果的审查和验证,以确保其准确性和可靠性。如果你有任何具体的问题或需要进一步的帮助,请随时告诉我!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 13:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表