精华内容
下载资源
问答
  • 可以,但是要在对应的头文件声明。 举例: //main.cpp string g_a = ""; int main(int argc,char **argv) { g_a = "abc";...变量可以多次声明,但是只能一次...最好的方式还是用一个头文件里声明全局变量,其他cpp若使

    可以,但是要在对应的头文件中声明。
    举例:

    //main.cpp
    string g_a = "";
    
    int main(int argc,char **argv)
    {
    	g_a = "abc";
      	return 0;
    }
    
    // server.h
    extern string g_a; //要声明
    
    // server.cpp
    int XXXX()
    {
    	Get_XXXX(g_a);
    	return 0;
    }
    

    变量可以多次声明,但是只能一次定义。

    最好的方式还是用一个头文件里声明全局变量,其他cpp若使用某个全局变量,在相应的头文件中包含该头文件即可。

    展开全文
  • 而在.h定义全局变量static char g_str[] = “123456”; #include “test1.h” void fun1() { g_str[0] = ‘‘a’’; cout ; } (2) test2.cpp #include “test1.h” void fun2() { cout ; } (3) void ...

    .h文件
    #ifndef CONFIG
    #define CONFIG
    extern int a;
    void static get();

    void show();
    #endif
    .c文件
    #include<stdio.h>
    #include"config.h"
    int a=10;
    void static get()
    {
    printf(“AAAAAAAAA\n”);
    }
    void show()
    {

    get();
    }
    主程序
    #include"config.h"
    extern int a;
    int main()
    {
    show();
    printf("%d\n",a);
    return 0;
    }

    由上面代码c语言定义全局函数限定调用范围(在.c里面实现),只能在本文件中被调用。

    而c++中在类里定义全局函数跟变量,加类名::就能调用。为全局变量,所有派生类共享这一块内存。

    而在.h定义全局变量static char g_str[] = “123456”;
    #include “test1.h”
    void fun1()
    {
    g_str[0] = ‘‘a’’;
    cout << g_str << endl;
    }
    (2) test2.cpp

    #include “test1.h”
    void fun2() { cout << g_str << endl; }
    (3)

    void main() {
    fun1(); // a23456
    fun2(); // 123456
    }
    这个时候你在跟踪代码时,就会发现两个编译单元中的g_str地址并不相同,因为你在一处修改了它,所以编译器被强行的恢复内存的原貌,在内存中存在了两份拷贝给两个模块中的变量使用。正是因为static有以上的特性,所以一般定义static全局变量时,都把它放在原文件中而不是头文件,这样就不会给其他模块造成不必要的信息污染,同样记住这个原则吧!

    展开全文
  • C++中定义全局变量

    千次阅读 2014-06-05 12:55:50
    函数变量在声明时,并没有给它实际的物理内存空间,它有时候可以保证你的程序编译通过,但是当函数变量定义的时候,它就在内存有了实际的物理空间,如果你在编译模块引用的外部变量没有在整个工程任何一个...


    参考:http://hi.baidu.com/nirvanan/blog/item/321b7c30d68d351feac4afdd.html
    函数或变量在声明时,并没有给它实际的物理内存空间,它有时候可以保证你的程序编译通过,但是当函数或变量定义的时候,它就在内存中有了实际的物理空间,如果你在编译模块中引用的外部变量没有在整个工程中任何一个地方定义的话,那么即使它在编译时可以通过,在连接时也会报错,因为程序在内存中找不到这个变量!你也可以这样理解,对同一个变量或函数的声明可以有多次,而定义只能有一次!

    使用全局变量最好定义一个h文件,用extern定义变量,cpp文件中声明变量。在需要用到的h文件中include该h文件,然后就可以用了。
    结构必须在头文件中定义,不许在cpp文件中定义。

    extern的作用就是声明的函数或变量可以在本模块或其他模块中使用,记住它是一个声明不是定义!
    也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时,它只要包含A模块的头文件即可, 在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会在连接时从模块A生成的目标代码中找到此函数。

    例子:
    在test1.h中有下列声明:
    #ifndef TEST1H
    #define TEST1H
    extern char g_str[]; // 声明全局变量g_str
    void fun1();
    #endif
    在test1.cpp中
    #include "test1.h"

    char g_str[] = "123456"; // 定义全局变量g_str

    void fun1()
    {
    cout << g_str << endl;
    }

    以上是test1模块,它的编译和连接都可以通过,如果我们还有test2模块也想使用g_str,只需要在原文件中引用就可以了
    #include "test1.h"

    void fun2()
    {
    cout << g_str << endl;
    }


    static修饰全局变量的作用域只能是本身的编译单元,也就是说它的“全局”只对本编译单元有效,其他编译单元则看不到它,如:
    test1.h:
    #ifndef TEST1H
    #define TEST1H
    static char g_str[] = "123456";
    void fun1();
    #endif

    test1.cpp:
    #include "test1.h"

    void fun1()
    {
    cout << g_str << endl;
    }

    test2.cpp
    #include "test1.h"
    void fun2()
    {
    cout << g_str << endl;
    }

    const修饰的全局常量据有跟static相同的特性,即它们只能作用于本编译模块中,但是const可以与extern连用来声明该常量可以作用于其他编译模块中, 如
    extern const char g_str[];
    然后在原文件中别忘了定义:
    const char g_str[] = "123456";
    所以当const单独使用时它就与static相同,而当与extern一起合作的时候,它的特性就跟extern的一样了!
    展开全文
  • MFC中定义全局变量和全局函数的方法,很不错的方法,网上可以搜到,所以积攒人品,0分
  • C++中定义全局变量的方法

    千次阅读 2016-08-29 21:02:04
    比如定义一个全局变量 varible 在.h文件 extern int varible; 在.h文件里应该可以不用写的,但为了方便其它文件调用,所以按照上面的方法写。 在.cpp文件 int varible; 然后其它类想要访问这个全局变量只要...
    比如定义一个全局变量
    varible
    在.h文件中
    extern int varible;
    在.h文件里应该可以不用写的,但为了方便其它文件中调用,所以按照上面的方法写。

    在.cpp文件中
    int varible;
    然后其它类中想要访问这个全局变量只要包含.h就可以了。
    展开全文
  • C/C++语言在头文件中定义全局变量

    千次阅读 2016-06-19 10:19:10
    全局变量可不可以定义在可被多个.C文件包含的头文件?为什么? 可以,在不同的C文件以static形式来声明同名全局变量。头文件不可以直接定义变量和函数,但是可以定义static变量 ,类。  extern 用法...
  • 在cpp文件进行函数定义: const std::stringTimeConvert(const LCSH::Time& time ) {  std::string m_time;  m_time= getstring(time.year); ………  returnm_time; } 在头文件对该函数进行全局...
  • C++中如何访问全局变量和全局函数

    千次阅读 2017-03-14 14:44:00
    全局变量和全局函数是相对局部变量和局部函数而言的,不在{}或者for, if 等范围内的都是全局变量或者全局函数,最简单的是在同一个文件去声明。 例如在mian.cpp #include &lt;iostream&gt;  int ...
  • 在默认情况下,全局变量的链接性为外部的,但 const 全局变量的链接性为内部的。也就是说,在 C++ 看来,全局 const 定义就像使用了 static 说明符一样。    因此,可以将 const 常量定义在头文件供工程...
  • 用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。
  • 原文地址:https://blog.csdn.net/qq_28448117/article/details/79895790 一:extern+变量声明主函数文件:extern int a; //全局变量a int main() {  ...... return 0; } 引用...
  • 局部变量 在一个函数内部定义变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用...例如,在f1函数中定义变量b和c,倘若在f2函数中定义变量b和c,它们在内存占不同的单元,不会混淆。
  • 在C语言使用extern 关键字来定义全局变量的时候,我们需要在.h文件和.c文件重复定义,这种重复,导致了出错几率的增加。 今天,在整理自己的代码的时候,考虑到我写的代码从一至终都是在一个cpp文件里面。于是,...
  • 今天做算法题目时无意发现,C++中 main函数之内变量 与 全局变量 是宥一定区别的。   #include &lt;iostream&gt; using namespace std; int n = 0, m = 0; char s[1600000][5]; int result[1600000];...
  • 用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。
  • 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 2. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量...
  • 常见多文件全局变量包含问题 在.h文件不要定义变量,通常为声明变量,定义变量会出现“error LNK2005: 已经在 .obj 中定义”类似这样的错误。根据c++规定,变量的声明必须同时满足两个条件:(1)声明必须使用...
  • 应用场景: 要求: 1,某个C++工程,需要在很多个类对象,获取一个分类信息,...1,全局结构体变量;2,类的静态函数;   功能代码段一: #ifndef CATEGORYINFO #define CATEGORYINFO #include "SF_RFID_Com
  • 今天上午写C++代码,被神马全局变量和静态全局变量困住了,出现了各种“重定义”和“链接”相关的error。到底在哪里声明,在哪里定义,哪里使用extern?
  • C++全局变量的声明和定义

    万次阅读 多人点赞 2012-08-11 09:58:23
    参考:... (1)编译单元(模块) ...第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件; 第二步,将工程所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产
  • mfc定义全局变量
  • static有两种用法:面向...全局变量、局部变量、静态全局变量、静态局部变量的区别  C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,
  • 如果函数中有一个与全局变量同 名的局部变量时,则在函数中使用该名称时,指得是局部变量而不是全局变量。这个也是面试经常问到的?局部变量能否和全局变量重名?具体看下面的代码 #include int x = 5; int y =...
  • 前言 今天,在整理自己的代码的时候,考虑到我...1. 宏定义、结构体定义函数声明以及全局变量定义放到一个head.h头文件 2. 函数定义放到head.cpp 3. main函数放到main.cpp 然而却报错了,提示xxx变量在
  • 全局变量可不可以定义在可被多个.C文件包含的头文件?为什么? 可以,在不同的C文件以static形式来声明同名全局变量。头文件不可以直接定义变量和函数,但是可以定义static变量 ,类。  extern 用法,...
  • 在子函数声明时加& 如 (int *&head);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,475
精华内容 69,390
关键字:

c++函数中定义全局变量

c++ 订阅