gpt4 book ai didi

c++ - C++ 符号的作用域

转载 作者:可可西里 更新时间:2023-11-01 18:28:03 24 4
gpt4 key购买 nike

据我所知,符号对于防止多重解析很有用。如果 a.h 和 b.h 都包含 c.h,则 a

#ifndef C_H
#define C_H
...
// c.h definition would go here
...
#endif

将防止 c.h 被“解析”(我认为这不是正确的词)不止一次。

不过,我见过类似的东西

#ifdef WIN32
...

在别人的代码中。该符号必须已在其他地方定义,因为搜索

#define WIN32

在整个项目中返回空。我的问题是:这些符号实际定义在哪里?操作系统是否保留类似于符号池的东西,不同的程序可以使用这些符号池来查询操作系统或其他进程属性?

最佳答案

有两个选项可以让那些不在代码本身中的选项源自:

  1. 当您开始编译代码时,编译器套件本身将其设置为默认值。
  2. 您在编译代码时(或您的 IDE 项目首选项,当您使用 IDE 时)为编译器(准确地说是预处理器)提供这些定义的列表。例如,在 Visual Studio 2013 中,您会发现当您打开“项目”>“属性”>“配置属性”>“C/C++”>“预处理器”>“预处理器定义”时的那些)。

一般来说,这些定义不仅用于您描述的原因(包括守卫),还用于根据您开发的平台启用或禁用代码 - 例如,您可以只为 windows 编译代码分支,或者仅当您使用 64 位编译器时。

关于c++ - C++ 符号的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com