首页 > 编程语言 >c++ extern关键字

c++ extern关键字

时间:2023-11-12 11:03:43浏览次数:40  
标签:函数 c++ 源文件 关键字 cpp extern main 声明

@[TOC]

什么是 extern?

extern 是 C++ 中的一个关键字,用于声明一个全局变量或函数,但并不分配内存或提供定义。它的主要作用是告诉编译器这个变量或函数在其他源文件中定义,编译器不应该分配内存空间或生成代码,而应该等待链接器来解析它。

使用 extern 声明变量

// 在一个源文件中定义一个全局变量
int globalVar = 42;

// 在另一个源文件中使用 extern 声明这个变量
extern int globalVar;

int main() {
    // 可以在这里使用 globalVar,编译器知道它的存在
    return 0;
}

在一个源文件中定义了 globalVar,然后在另一个源文件中使用 extern 来声明它,以便在 main 函数中使用。

使用 extern 声明函数

extern 同样适用于函数的声明,在一个源文件中声明函数,然后在另一个源文件中定义它。

// 在一个源文件中声明函数
extern void someFunction();

int main() {
    // 调用在其他源文件中定义的函数
    someFunction();
    return 0;
}

示例

假设有两个源文件:main.cppfunctions.cpp

main.cpp

#include <iostream>

// 声明在 functions.cpp 中定义的函数
extern void printMessage();

int main() {
    printMessage();
    return 0;
}

functions.cpp

#include <iostream>

// 定义函数
void printMessage() {
    std::cout << "Hello from functions.cpp!" << std::endl;
}

main.cpp 中使用 extern 声明了 printMessage 函数,然后在 functions.cpp 中定义了这个函数。编译和链接这两个源文件时,输出 "Hello from functions.cpp!"。

总结

extern 关键字允许在一个源文件中声明全局变量和函数,然后在其他源文件中定义它们。

标签:函数,c++,源文件,关键字,cpp,extern,main,声明
From: https://blog.51cto.com/u_16202095/8326477

相关文章

  • C++零基础教程(抽象类和接口)
    (文章目录)前言本篇文章来讲解抽象类和接口的概念,抽象类和接口都需要依靠我们之前讲解的虚函数来实现,那么我们就来看看如何使用虚函数来实现抽象类和接口吧。一、抽象类概念抽象类是一种不能直接实例化(即创建对象)的类,它被用作其他类的基类或接口。抽象类通过声明纯虚函数(没有......
  • c++ function使用
    一、function介绍funciotn是从c++11开始支持的特性,使用它需要包含<functional>头文件在cppreference中解释为:类模板std::function是一个通用的多态函数包装器。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达......
  • C++ 采用get()和put()读写文件
    在某些特殊的场景中,我们可能需要逐个读取文件中存储的字符,或者逐个将字符存储到文件中。这种情况下,就可以调用get()和put()成员方法实现。C++ostream::put()成员方法通过《C++cout.put()》一节的学习,读者掌握了如何通过执行cout.put()方法向屏幕输出单个字符。我们知道,fstr......
  • C++ 使用getline():从文件中读取一行字符串
    getline()方法从cin输入流缓冲区中读取一行字符串。在此基础上,getline()方法还适用于读取指定文件中的一行数据,本节就给大家做详细的讲解。我们知道,getline()方法定义在istream类中,而fstream和ifstream类继承自istream类,因此fstream和ifstream的类对象可以调用ge......
  • C++ 采用read()和write()读写二进制文件
    以文本形式读写文件和以二进制形式读写文件的区别,并掌握了用重载的>>和<<运算符实现以文本形式读写文件。在此基础上,本节继续讲解如何以二进制形式读写文件。举个例子,现在要做一个学籍管理程序,其中一个重要的工作就是记录学生的学号、姓名、年龄等信息。这意味着,我们需要用一个......
  • C++ 的cout格式化输出
    在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留2位小数,再比如以十六进制的形式输出整数,等等。对于学过C语言的读者应该知道,当使用printf()函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如%.2f表示输出浮点......
  • C++读取单个字符操作
    get()是istream类的成员函数,它有多种重载形式,不过本文只介绍最简单最常用的一种:intget();此函数从输入流中读入一个字符,返回值就是该字符的ASCII码。如果碰到输入的末尾,则返回值为EOF。EOF是EndofFile的缩写。istream类中从输入流(包括文件)中读取数据的成员函数,在把输......
  • class是js关键字,jsx中要用className
    下面的JSX代码中,哪一个无法达到预期的效果?AHelloWorldBC{msg}DLeoEF正确答案:C选cclass是js关键字,这里要用className。对于E选项,在jsx中直接写行内样式时不能采用引号,而是style={{color:'red'}}的方式选择C,在jsx里面,要把class换成className才能正确编译,表......
  • 二元子句归结的c++代码分析
      1//Tryfurtherlearntclauseminimizationbymeansofbinaryclauseresolution.2boolSolver::binResMinimize(vec<Lit>&out_learnt)3{4//Preparation:rememberwhichfalsevariableswehavein'out_learnt'.5......
  • L2-037 包装机 (25 分)(C/C++)
    输入样例:344GPLTPATAOMSA3230120220-1输出样例:MATA这道题需要注意的就是当框空的时候,按下0是什么都不会发生的。当对应轨道空的时候,按下对应轨道的数字也是什么都不会发生的当对应轨道不为空,但是框满的时候,需要先把框顶的弹出来,再装进去新的。#include<iostream>#......