请问C++ 中定义范围最大的 是啥 ???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问C++ 中定义范围最大的 是啥 ???相关的知识,希望对你有一定的参考价值。
参考技术A double和
unsigned long long 参考技术B 不懂你的意思 参考技术C long long追问
那那个 long double 是 什么 啊
追答那个是浮点型的超长类型
而long long是整型的超长类型
c++ 中预编译器定义的范围是啥?
【中文标题】c++ 中预编译器定义的范围是啥?【英文标题】:What is the scope of pre-compiler define in c++?c++ 中预编译器定义的范围是什么? 【发布时间】:2016-02-03 03:19:55 【问题描述】:预编译器的范围是否定义了它定义的文件? 例如:
三个文件:
test1.hpp/test1.cpp test2.hpp/test2.cpp test3.hpp/test3.cpp
test1.cpp 内的一个:
#ifndef test1_hpp
#define test1_hpp
// some declarations
#endif
test2.hpp
和 test.hpp
都是 #include
test1.hpp。如果 test1_hpp 的范围是整个应用程序,据我了解,只有一个包含 test1.hpp 成功。因为一旦包含,test1_hpp 就被定义了。
【问题讨论】:
"独家新闻" => "范围"?另外,请确保将代码标记为代码(缩进 4 个空格)。 请给出一个具体的例子来说明你所说的那种变量。An within test1.cpp:
你的意思是test1.**hpp*
?
【参考方案1】:
test2.hpp 和 test.hpp 都#include test1.hpp。如果 test1_hpp 的范围是整个应用程序,据我了解,只有一个包含 test1.hpp 成功。因为一旦包含,test1_hpp 就被定义了。
编译器适用于翻译单元(想想:单个 .cpp 文件)而不是整个应用程序(想想:可执行文件)。您所说的“预编译器定义的范围”就是当前的翻译单元。在您的示例中,test1.hpp
中的 // some declarations
部分将在直接或间接包括 test1.hpp
的每个 CPP 中可见/处理,即在所有 test1.cpp
(直接)、test2.cpp
、test3.cpp
中(间接地,通过both #include test1.hpp
)。
#ifndef test1_hpp
是一种常见的习惯用法,用于防止在同一翻译单元中多次无意中包含相同的头文件 - 参见例如"Use of #include guards" on Wikipedia。
【讨论】:
对不起。我不明白。 c++ 保留标头保护预编译的目的是避免再次添加声明。我对这种情况没有任何疑问。另一个问题是两个不同的文件都包含一个标题一次,如果#define定义的变量具有全局范围,代码将不会在另一个文件上执行,因为变量已经定义。实际结果是我可以在两个文件中使用,但我不知道这是怎么发生的。 @malin.llvisionIt is the other secene that two different file both include one header once,If the variable
抱歉,不确定您的意思。编译 file1.cpp 时的宏 #define'd 对 file2.cpp 的编译没有任何影响。【参考方案2】:
你的假设是正确的。如果您在标头中使用#ifndef
保护,那么在预处理器第一次将 test1.hpp 包含在您的应用程序中时,test1_hpp
将被定义并允许将代码包含在您的标头中。将来包含 test1.hpp,由于有保护,代码不会被重新包含。
这在很大程度上是为了防止在项目的多个文件中包含标头时出现双重定义,并遵守one definition rule。
【讨论】:
首先,非常感谢。如果第二次#Include "test1.hpp" 不执行,其他人是怎么得到接口的?以上是关于请问C++ 中定义范围最大的 是啥 ???的主要内容,如果未能解决你的问题,请参考以下文章
C语言数值范围最大的数据类型(即能输出最大值)是啥?还有怎么用printf函数表示?