Bha*_*rya 3 c global-variables
大家好,我是一名 C++ 开发人员,现在正在做 C 编程。
我的问题是在c程序中哪个地方声明全局变量更好。标头或源文件(前提是我的全局变量未在其他文件中使用)?
我想要像 C++ 中的私有变量那样的变量。
假设您的变量是全局且非静态的。
您需要在头文件中声明它。extern我们为此使用关键字。正如评论中指出的,this 关键字不是必需的,但大多数 C 用户更喜欢在标头中使用它,这是一种约定。
堆栈溢出.h:
#ifndef STACHOVERFLOW_H
#define STACHOVERFLOW_H
extern int my_var;
#ifndef
Run Code Online (Sandbox Code Playgroud)
然后在源文件中初始化它。extern(如果要提供初始化值,则禁止使用关键字)。
堆栈溢出.c
#include "stackoverflow.h"
int my_var = 50;
Run Code Online (Sandbox Code Playgroud)
不要将初始化值放入标头中,否则如果标头至少使用两次,您将收到链接器错误。
现在,您可以通过包含标头在任何其他模块中使用您的变量。
主程序
#include <stdio.h>
#include "stackoverflow.h"
int main()
{
printf("my_var = %d\n", my_var);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在“stackoverflow.c”中包含头文件“stackoverflow.h”是一种确保源文件中的定义与头文件中的声明匹配的方法。这允许在编译时出现错误,而不是有时出现神秘的链接器错误。
编辑:这根本不是使变量“私有”的方法。您必须使用静态变量使其成为“私有”。参见R Sahu 的回答