关于C++emacs c mode 的问题题

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
看到在好多cpp文件中,都有下面这样的写法#ifndef LIB_XXX_XXX
#define LIB_XXX_XXX
一大段代码
#endif请问这么宏定义的具体作用?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
《c++ primer》一书2.9.2节:在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。预处理器变量的名字在程序中必须是唯一的。任何与预处理器变量相匹配的名字的使用都关联到该预处理器变量。为了避免名字冲突,预处理器变量经常用全大写字母表示。预处理器变量有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。#define指示接受一个名字并定义该名字为预处理器变量。#ifndef 指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,直到出现 #endif。可以使用这些设施来预防多次包含同一头文件:#ifndef SALESITEM_H
#define SALESITEM_H
// Definition of Sales_itemclass and related functions goes here
#endif条件指示#ifndef SALESITEM_H 测试 SALESITEM_H 预处理器变量是否未定义。如果SALESITEM_H 未定义,那么 #ifndef 测试成功,跟在 #ifndef 后面的所有行都被执行,直到发现 #endif。相反,如果 SALESITEM_H 已定义, 那么 #ifndef 指示测试为假,该指示和#endif 指示间的代码都被忽略。为了保证头文件在给定的源文件中只处理过一次,我们首先检测 #ifndef。第一次处理头文件时,测试会成功,因为 SALESITEM_H 还未定义。下一条语句定义了 SALESITEM_H。那样的话,如果我们编译的文件恰好又一次包含了该头文件。#ifndef 指示会发现 SALESITEM_H 已经定义,并且忽略该头文件的剩余部分。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先,这些宏定义不是在cpp文件中,而是在头文件中的。
我们知道,头文件一般是用来声明的,会被其他的源文件和头文件include,当被多个文件include的时候就会造成重复声明。
为了使得只声明一次,引入问题中所说的宏定义,一般以文件名大写和_来当宏的名字。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先,这个应该是在头文件中的,为了防止头文件被重复引用,ifdefine XXXH defined XXXH endif
XXXH就是一个标记
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你必须要清楚为什么需要条件编译.........
因为最后所有的文件都会被include到一起..
gcc -E 可以让你看得很清楚
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知wcschr用法有关问题 - C++当前位置:& &&&wcschr用法有关问题wcschr用法有关问题&&网友分享于:&&浏览:25次wcschr用法问题unicode模式下wchar_t
*p,*q,*r;q=wcschr(&-&,p);这么写error C2665: “wcschr”: 2 个重载中没有一个可以转换所有参数类型什么问题哎。。------解决方案--------------------
C/C++ code
wchar_t *wcschr( const wchar_t *string, wint_t c );
wchar_t p,*q;
q=wcschr(L&01-3&,p);
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有 上传我的文档
 下载
 收藏
英语 整理 资料
 下载此文档
正在努力加载中...
关于学习C++的问题
下载积分:1500
内容提示:关于学习C++的问题
文档格式:DOC|
浏览次数:1|
上传日期: 00:51:58|
文档星级:
该用户还上传了这些文档
关于学习C++的问题
官方公共微信有关c++的问题_百度知道C/C++(150)

一. 不好的习惯
#include &A.h&
/////////////////////////////////////
#include &A.h&
// 这里包含头文件不好
// 因为 class B声明中只是用了A*
#include &B.h&
B::B() : A(new A)
二. 好的习惯, 使用前向声明
#include &File1.h&
/////////////////////////////////////
// 使用前向声明
#include &B.h&
#include &A.h&
B::B() : A(new A)
其实这个是很基础的.
三. 命名空间与前向声明
namespace NA
#include &File1.h&
namespace NA
/////////////////////////////////////
namespace NA
// 你需要这样子使用前向声明
namespace NB
NA::A* m_pA;
#include &B.h&
#include &A.h&
namespace NB
B::B() : NA::A(new NA::A)
四. 模板, 命名空间与前向声明
例如 如果前向声明std::string, 会报这个错误: error C2371: “std::string”: 重定义;不同的基类型
不知怎么解决!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1003843次
积分:14642
积分:14642
排名:第524名
原创:427篇
转载:266篇
评论:181条
★★★★★
★★★★★
文章:13篇
阅读:4686
文章:41篇
阅读:29993
(1)(1)(7)(2)(1)(4)(10)(2)(6)(10)(7)(12)(13)(7)(4)(2)(18)(17)(2)(8)(9)(2)(14)(1)(4)(19)(19)(20)(13)(9)(12)(12)(1)(18)(20)(13)(18)(2)(5)(1)(6)(7)(16)(8)(16)(1)(1)(4)(2)(6)(3)(3)(7)(7)(11)(8)(10)(21)(12)(5)(11)(11)(15)(25)(18)(19)(3)(13)(9)(15)(23)(20)(2)(3)(6)

我要回帖

更多关于 小米4c出现的问题 的文章

 

随机推荐