首页 > 编程语言 >c++.13

c++.13

时间:2023-04-23 11:46:53浏览次数:35  
标签:__ 文件 13 头文件 函数 Makefile c++ 编译

预处理指令:     #define     常见笔试面试题:     1、简述#define与typedef的区别:         如果是普通类型,它们在功能上无任何区别,但本质不同,一个是代码替换,一个是类型重定义         #define INTP int*             INTP p1,p2,p3;  //p1是指针 p2 p3是int             int* p1,*p2,*p3         typedef int* INTP;             INTP p1,p2,p3;  //p1p2p3都是指针             size_t s1,s2,s3;         2、宏函数与普通函数的区别?         是什么?         普通函数:是一段觉有某项功能的代码集合,会被编译成二进制指令存储在代码段中,函数名就是它的首地址,有独立的栈内存
        宏函数:带参数的宏替换,不是真正的函数,用起来像函数,没有独立的栈内存         有什么区别?         函数:  返回值、类型检查、安全、入栈出栈调用、跳转、速度慢         宏函数:运行结果、通用、危险、替换、冗余、速度快
    条件编译:         根据条件决定让代码是否参与最终的编译
        版本控制:         #if         #elif         #else         #endif
        头文件卫士:防止头文件被重复包含,头文件必加         #ifndef 宏名    //如果宏不存在为真         #define 宏名         //         #endif
        判断、调试:         #ifdef 宏名 //如果宏存在为真         #else         #endif         在编译时添加宏DEBUG:gcc 02debug.c -DDEBUG
    打印调试信息:         #ifdef DEBUG             #define debug(...) printf(__VA_ARGS__)         #else             #define debug(...)         #endif     打印错误信息:         #define error(...) printf("%s %s:%d %s %m %s %s\n",__FILE__,__func__,__LINE__,__VA_ARGS__,__DATE__,__TIME__)
头文件中应该写什么:     头文件可能会被任意源文件包含,意味着头文件中的内容可能会在多个目标文件中存在,要保证合并时不要冲突     重点:头文件只编写声明语句,不能有定义语句         全局变量声明         函数声明         宏常量         宏函数         typedef 类型重定义         结构、枚举、联合的类型设计声明     头文件的编写规则:         1、为每个.c文件写一份.h文件,.h文件是对它对应的.c文件的说明         2、如果需要用到某个.c文件中的变量、函数、宏时,只需要把该文件的.h文件导入即可         3、.c文件也要导入自己的.h文件,目的是为了让定义与声明保持一致     头文件的相互包含:         假如a.h包含了b.h的内容,而b.h中又包含了a.h的内容,这时就会产生头文件的相互包含,无法编译通过         解决方案:把a.h中需要b.h的内容,和b.h中需要a.h的内容提取出来,额外再写另一个c.h
Makefile:     Makefile是由一系列的编译器指令组成的可执行文件,叫做编译脚本     在终端执行 make 命令就会自动执行Makefile脚本中的编译指令,它可以根据文件的修改时间、和依赖关系来判断哪些文件需要编译,哪些不需要编译     需要一个名字叫做 Makefile 的编译文件     Makefile的编译规则:     1. 如果这个工程没有编译过,那么我们的所有c 文件都要编译并被链接。     2. 如果这个工程的某几个c 文件被修改,那么我们只编译被修改的c 文件,并重新链接目标程序。     3. 如果这个工程的头文件被改变了,那么引用了这几个头文件的c 文件都会重新编译,并链接目标程序。
    一个最简单的Makefile脚本格式:     执行总目标:依赖         编译指令     被依赖的目标1:依赖的文件         编译指令     被依赖的目标2:依赖的文件         编译指令         ...
2048游戏-多文件编程     文件规则:     main.c  程序的入口     game2048.c game2048.h   游戏的业务逻辑功能     direction.c direction.h 方向键处理     tools.c tools.h    工具函数     创建文件脚本:     project_create.sh       编辑文件脚本     game2048.conf     编译脚本:     Makefile     要求:数据存储在堆内存中

标签:__,文件,13,头文件,函数,Makefile,c++,编译
From: https://www.cnblogs.com/mrlinan/p/17346030.html

相关文章

  • C与C++的区别(程序上)
    一.头文件上  1.为什么c++语言的头文件上可以使用"stdio.h"?  答:因为c++的标准库已经帮我们包含了c语言的标准库,因此c++也可以实现c语言能实现大多功能。例如"iostream"是c++的输入输出流头文件,"stdio.h"是c语言的输入输出流头文件,当在c++语言中调用"stdio.h"后便可以在c++......
  • C++.14
    结构:  结构是由程序员自己设计的一种数据类型,用于描述一种事物的各项数据,由若干个不同的基础类型组成  设计:  struct结构体类型名  {    类型名成员名;    ...  };  定义:    struct结构体类型名结构体变量名; ......
  • c++第十天
    指针复习:  什么是指针:    数据类型定义指针变量整型内存编号访问对应内存  为什么使用指针:    1、函数之间共享变量      输入、输出    2、提高传参效率      指针变量4\8字节    3、使用堆内存时......
  • C++ - 多线程之初识多线程
    1.认识多线程传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h>。C++11提供了语言层面上的多线程,包含在头文件<thread>中。它解决了跨平台的问题,提供......
  • 从0开始写三维“软”引擎.part1 - 2013.7.13 - David Rousset
    I’dtoliketosharewithyouhowI’velearnedtobuildwhat’sknownasa“3Dsoftengine”throughaseriesoftutorials.“Softwareengine”meansthatwewilluseonlytheCPUtobuilda3Dengineinanoldschoolway(rememberDoomonyour80386?).I......
  • Effective Modern C++ 学习笔记
    闲话今天是2023年4月23日,俺开始正式学习面试相关内容了。打算先从EffectiveModernC++这本书开始学起,作为日后代码风格、习惯的指导。不过俺没有一起学习的小伙伴,qwq。与ICPC切割之后,内心都轻松了许多。小醉一宿之后还是十分愉悦的。欢迎加入C++学习群:https://j......
  • 学习-13
    1.回顾1.nginx--反向代理负载均衡动静分离2.搭建nginx高可用集群---keepalived2.正文--redis[重点]1.什么是NOSQL2.NOSQL和RDBMS的区别3.NOSQL的产品4.介绍Redis5.安装Redis6.redis支持的数据类型3.什么是NOSQLNOSQL(notonlysql)不仅是sql,它是所有非......
  • 13款监测工具使用
    Linux运维必备的13款实用工具,你都用过吗?运维网工 2023-04-2209:00 发表于重庆收录于合集#Linux运维工具2个#运维工程师119个#网络运维77个#运维工具78个#运维管理66个本文介绍几款Linux运维比较实用的工具,希望对Linux管理员有所帮助。1、查看进程占用......
  • Vicuna-13B, an open-source chatbot trained by fine-tuning LLaMA
    一、项目背景WeintroduceVicuna-13B,anopen-sourcechatbottrainedbyfine-tuningLLaMAonuser-sharedconversationscollectedfromShareGPT.PreliminaryevaluationusingGPT-4asajudgeshowsVicuna-13Bachievesmorethan90%* qualityofOpenAIChatGPT......
  • 基于C++控制台的吃豆人小游戏
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]玩家目标是吃掉所有豆豆,途中,若玩家撞到怪兽则游戏结束。游戏中存在超级豆子,吃到后,所有怪兽静止,且玩家进入无敌状态(可撞怪兽使之回到初始位置)。玩家可使用键盘方向键进行选择、控制移动,回车键确定,Esc键返回,空格键暂停。控制台小游戏......