gpt4 book ai didi

c - 我在哪里可以在c程序中声明全局变量,无论是在头文件还是源文件中

转载 作者:行者123 更新时间:2023-12-01 08:08:12 30 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I use extern to share variables between source files?

(18 个回答)


6年前关闭。




嗨,我是一名 C++ 开发人员,现在我正在做 C 编程。

我的问题是在 c 程序中声明全局变量的位置更好。
头文件或源文件(前提是我的全局变量未在其他文件中使用)?

我想要像 C++ 中的私有(private)变量一样的变量。

最佳答案

假设您的变量是全局且非静态的。

您需要在头文件中声明它。我们使用 extern为此的关键字。正如评论中所指出的,这个关键字不是必需的,但大多数 C 用户更喜欢在标题中使用它,这是一种约定。

堆栈溢出.h:

#ifndef STACHOVERFLOW_H
#define STACHOVERFLOW_H

extern int my_var;

#ifndef

然后你在源文件中初始化它。 (如果要提供初始化值,禁止使用关键字 extern)。

堆栈溢出.c
#include "stackoverflow.h"

int my_var = 50;

不要将初始化值放在 header 中,否则如果 header 至少使用两次,您将收到链接器错误。

现在,您可以通过包含 header 在任何其他模块中使用您的变量。

主程序
#include <stdio.h>
#include "stackoverflow.h"

int main()
{
printf("my_var = %d\n", my_var);
return 0;
}

在“stackoverflow.c”中包含头文件“stackoverflow.h”是一种确保源文件中的定义与头文件中的声明匹配的方法。这允许在编译时立即出现错误,而不是有时出现神秘的链接器错误。

编辑:这根本不是使变量“私有(private)”的方法。您必须使用静态变量将其设为“私有(private)”。见 R Sahu's answer

关于c - 我在哪里可以在c程序中声明全局变量,无论是在头文件还是源文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638375/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com