无忧启动论坛

标题: C++ 多文件协作问题 [打印本页]

作者: proof    时间: 2024-12-2 16:10
标题: C++ 多文件协作问题
program.cpp      main()所在的主文件
function.h          头文件,用于声明函数
function.cpp       用于定义函数,内容如下:
-----------------------------------------
#include "function.h"

int  AST;            //测试代码
AST=8888;        //测试代码,编译报错

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}
-----------------------------------------

测试代码  int  AST;    AST=8888;  若插入函数体中,比如add(){          },则编译正常。
若不属于任何函数体,则 int  AST;  通过。
AST=8888; 报错:
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2086: 'int AST' : redefinition

问题:这两行测试代码,若写在主文件 program.cpp中,且不属于任何函数体,则属于全局变量。可以正常编译。
   若在非主文件 function.cpp中,且不属于任何函数体。int  AST;  或者  int  AST=88; 能够通过,属于哪种范围变量?是否执行不到它?
   C++ 多文件协作,是一个什么规则?


作者: wintoflash    时间: 2024-12-2 17:20
本帖最后由 wintoflash 于 2024-12-2 17:26 编辑

int AST = 8888;
在其他文件里面使用AST全局变量:
extern int AST;
如果不在函数里面,是不能执行
AST = 8888;
这种语句的。

c++没有“主文件”这种说法,你写在函数外面就是全局变量。
一般情况应该把 extern int AST; 放 common.h 头文件里,用到它的时候include就行。

作者: likeyouli    时间: 2024-12-2 17:32
wintoflash 发表于 2024-12-2 17:20
int AST = 8888;
在其他文件里面使用AST全局变量:
extern int AST;

请问大元帅都学了啥? 精通grub2、grub4,还精通c++ , 还精通啥 ?
作者: softwarezheng1    时间: 2024-12-2 18:13
自己是学计算机的,但是看代码,也是有点透疼,转行干别的行业
作者: a7777777    时间: 2024-12-2 19:09
赞一个!
作者: tanglf    时间: 2024-12-3 08:48
看看代码,有益知识
作者: guong    时间: 2024-12-3 10:43
来了解一下
作者: jabbie    时间: 2024-12-3 11:18
高手啊,编译都会
作者: wn168cn@163.com    时间: 2024-12-3 11:33
学习了 感谢分享
作者: 孟仁飞    时间: 2024-12-6 14:40
学习




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3