无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 644|回复: 9
打印 上一主题 下一主题

[求助] C++ 多文件协作问题

[复制链接]
跳转到指定楼层
1#
发表于 2024-12-2 16:10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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++ 多文件协作,是一个什么规则?

2#
发表于 2024-12-2 17:20:11 | 只看该作者
本帖最后由 wintoflash 于 2024-12-2 17:26 编辑

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

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

点评

请问大元帅都学了啥? 精通grub2、grub4,还精通c++ , 还精通啥 ?  详情 回复 发表于 2024-12-2 17:32

评分

参与人数 1无忧币 +10 收起 理由
sunsea + 10 很给力!

查看全部评分

回复

使用道具 举报

3#
发表于 2024-12-2 17:32:43 | 只看该作者
wintoflash 发表于 2024-12-2 17:20
int AST = 8888;
在其他文件里面使用AST全局变量:
extern int AST;

请问大元帅都学了啥? 精通grub2、grub4,还精通c++ , 还精通啥 ?
回复

使用道具 举报

4#
发表于 2024-12-2 18:13:10 | 只看该作者
自己是学计算机的,但是看代码,也是有点透疼,转行干别的行业
回复

使用道具 举报

5#
发表于 2024-12-2 19:09:35 | 只看该作者
赞一个!
回复

使用道具 举报

6#
发表于 2024-12-3 08:48:24 | 只看该作者
看看代码,有益知识
回复

使用道具 举报

7#
发表于 2024-12-3 10:43:27 | 只看该作者
来了解一下
回复

使用道具 举报

8#
发表于 2024-12-3 11:18:42 | 只看该作者
高手啊,编译都会
回复

使用道具 举报

9#
发表于 2024-12-3 11:33:28 | 只看该作者
学习了 感谢分享
回复

使用道具 举报

10#
发表于 2024-12-6 14:40:49 | 只看该作者
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-27 15:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表