同样在同一C文件中定义的变量与关键字“ extern”是否存在冲突?

问题描述

如果我在file1.c中定义了一个全局变量,并且还在同一文件中使用'extern'进行了声明,那是错误还是可以接受的?

file1.c:

$result = $soap->authRequest(
    array(
        'name' => $user,'password' => $password
    )
);

我还将在另一个文件中使用“ extern”对其进行声明。

file2.c:

extern int x;

int x;

这是正确/可以接受吗?

解决方法

这或多或少完全是要实现的目的。
extern并不意味着“将在与此不同的文件中定义”,而更多的是“将在一个代码文件中定义,而不必在此文件中定义”。
对于奖励积分,请将声明(带有extern的行)放在标头中,并将其包括在两个代码文件中,一个是带有定义的,即不带extern的行,另一个是。 /> 在所有代码文件的总数中,始终只有一个定义行。这样,您可以避免重新定义问题,并同时确保不要在多个代码文件中使声明不一致。 (请考虑对代码进行维护,这可能有必要更改变量的定义和声明。)
也就是说,请尽可能避免使用全局变量。

,

extern是C编程语言中的关键字,用于声明全局变量,该变量是未分配任何内存的变量。它用于在头文件中声明变量和函数。 extern可以用于C files上的访问变量。

定义初始化变量或类型(可以是结构或任何其他有效的c类型),定义表示在c file中将变量所需的内存分配为global(此变量的范围仅是其自身的文件),而您expand或通过在extend中外部对其进行h file的范围,或者更准确地说,在declareh file它的范围{{strong>声明,这意味着编译器知道该变量存在,但是没有为它分配任何内存或数据。您可以根据需要多次声明它!)主要规则是extern仅应在头文件中使用。

例如:

在file1.c

int g_my_global = 0;

在file1.h

extern int g_my_global ;

现在每个头文件或c文件都包含您的file1.h,便可以访问g_my_global

在file2.c中

#include "file1.h"
....
/*use g_my_global */  
g_my_global  = 10;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...