cpp-关于C++多文件结构中条件编译的问题!大神快来帮帮我!!

问题描述

关于C++多文件结构中条件编译的问题!大神快来帮帮我!!

3个文件:
main.cpp;
a.cpp;
a.h;
在main.cpp中:
#include "a.h"
在a.cpp中:
#include "a.h"
在a.h中:
#ifndef A_H
#define A_H
问题是A__H这个标识符在整个程序中是唯一的吗,还是每个cpp都有一个不同的A____H,如果是前者的话,那么实际上
a.h只在main.cpp中包含了一次,但是我如果把a.cpp中#include“a.h”注释掉的话,程序会报错,没有定义相关的函数。
IDE是codeblocks

解决方案

这个条件编译宏是全局唯一的,加这个判断是为了防止头文件重复包含,为什么要防止这个呢,因为在不同的编译单元里,如果有重复声明或定义,那链接器就会报错。但是你在a.cpp里面还是要包含a.h,因为你得知道a.h里面声明的类型的内存结构

解决方案二:

每个包含h文件decpp中都会有这个宏,这样就可以避免重复包含

解决方案三:

#ifndef A_H
#define A_H
这个放心大胆的用吧,是唯一的没什么问题

时间: 2024-10-21 17:49:15

cpp-关于C++多文件结构中条件编译的问题!大神快来帮帮我!!的相关文章

使用Template模板生成了脚本后怎么把这个脚本的内容写入到一个txt文件中呢?求大神解答

问题描述 使用Template模板生成了脚本后怎么把这个脚本的内容写入到一个txt文件中呢?求大神解答 public static void main(String[] args) throws Exception { Map map = new HashMap(); Configuration cfg = new Configuration(); Template t = cfg.getTemplate("src/main/webapp/model/sqoop_header.ftl"

java-为什么这三段代码写出来的文件没有区别,求大神解答

问题描述 为什么这三段代码写出来的文件没有区别,求大神解答 File f=new File("d:/text1.txt"); FileOutputStream outfile=new FileOutputStream(f,true); try { for(int i='A';i<='Z';i++) outfile.write(i); outfile.write('t'); byte b[]="java程序设计".getBytes(); outfile.writ

javaee-在开发ssh框架的web应用beans.xml文件中出错,求大神解救

问题描述 在开发ssh框架的web应用beans.xml文件中出错,求大神解救 在开发ssh框架的web应用beans.xml文件中出错,求大神解救: 错误::Class 'org.apache.commons.dbcp.BasicDataSource' not found Class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found 1.以下是代码 xmlns:xsi="http://www.w3.or

c语言-C语言文件一小问题!求大神

问题描述 C语言文件一小问题!求大神 #include"stdio.h" #include"stdlib.h" #define N 3 #define M 4 struct student { int num; char name[20]; int score[M]; }stu[N]; int main() { int i,j; FILE fp; if((fp=fopen("shuju.txt","wb"))==NULL) {

c 文件操作-c图片文件读取问题,坐等大神

问题描述 c图片文件读取问题,坐等大神 enter code here void fileCopy( const char * targetFilePath, const char * toPlace ){ FILE * istream, * ostream; // if(( istream = fopen( targetFilePath, "r" )) == NULL ){ printf("文件不存在!"); exit( 0 ); } ostream = fope

android模拟器-启动avd manager的时候,提示“系统找不到指定文件”,怎么办,求大神解答

问题描述 启动avd manager的时候,提示"系统找不到指定文件",怎么办,求大神解答 解决方案 Testbed 提示错误信息"系统找不到指定的文件" 解决方案二: 如果你以前可以使用,现在出现这种问题,估计就是你改了文件名或者目录移动了,确定目标文件是否存在,或重新配置目标路径试试

软件开发-安卓,文件夹创建及文件读写出错,希望大神看看

问题描述 安卓,文件夹创建及文件读写出错,希望大神看看 以下是mainActivity: package com.example.dell_pc.myapplication; import android.content.DialogInterface; import android.os.Bundle; import android.os.Environment; import android.support.design.widget.FloatingActionButton; import

c语言-C语言文件一小问!求大神

问题描述 C语言文件一小问!求大神 问题.我写了数据存放到文本,保存后.再次增加数据进去就出现问题. 1.一开始存入两个学生数据.没出错2.当我再往里面添加1个学生信息3.我次运行程序都会先刷新一下,增加数据都会保存.void shuaxin() //刷新学生信息函数{ FILE *fp; int i=0; //记录学生人数 if((fp=fopen(""student.txt""r""))==NULL) { printf(""

c#pdf直接显示指...-新手学c#关于打开PDF格式文件的问题,求助大神解决

问题描述 新手学c#关于打开PDF格式文件的问题,求助大神解决 单击事件:system.Diagnostics.Process.Start("PDF文件的位置和文件名".PDF) 这个能不能实现打开PDF文件时,跳转到指定的页码?! 代码改怎么写? 解决方案 http://www.foxitsoftware.cn/products/reader/ foxit下载.介绍 关于命令行调用更多的文档 打开福昕阅读器,选择"帮助" > "命令行帮助"