“#define STR(a) #a”有什么作用?

2024-01-02

我正在阅读phoneME的源代码。它是一个 FOSS JavaME 实现。它是用 C++ 编写的,我偶然发现了这一点:

// Makes a string of the argument (which is not macro-expanded)
#define STR(a) #a

我了解 C 和 C++,但我从未读过这样的东西。什么是# in #a do?

另外,在同一个文件中,还有:

// Makes a string of the macro expansion of a
#define XSTR(a) STR(a)

我的意思是,如果定义一个新的宏只是调用一个现有的宏,那它有什么用呢?

源代码位于。您可以使用 CTRL+F 找到它。


在第一个定义中,#a表示将宏参数打印为字符串。这将会改变,例如STR(foo) into "foo",但它不会对其参数进行宏扩展。

第二个定义不会向第一个定义添加任何内容,但通过将其参数传递给另一个宏,它会强制对其参数进行完整的宏扩展。所以XSTR(expr)创建一个字符串expr所有宏都完全展开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“#define STR(a) #a”有什么作用? 的相关文章

  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • 如何向WebRequest添加参数?

    我需要从 Web 服务调用一个方法 所以我编写了以下代码 private string urlPath http xxx xxx xxx manager string request urlPath index php org get or
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 应用新设置时如何防止 GraphicsDevice 被丢弃?

    我的游戏窗口允许手动调整大小 这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小 游戏还利用了RenderTarget2D rt2d 在主 Draw 方法中设置主渲染目标 GraphicsDevice SetRenderTarge
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • C# 反序列化过程中创建指向父对象的指针

    我有这样的课程 Serializable public class child public Parent parent Serializable public class Parent public List
  • 确定相关词的编程方式?

    使用网络服务或软件库 我希望能够识别与词根相关的单词 例如 座位 和 安全带 共享词根 座位 但 西雅图 不会被视为匹配 简单的字符串比较对于这类事情似乎是不可行的 除了定义我自己的字典之外 是否有任何库或 Web 服务不仅可以返回单词定义
  • 这些工作队列标志意味着什么?

    在研究工作队列时 我遇到了内核中定义的工作队列标志和常量 我有以下我无法理解的疑问 这里的排水和救援到底是什么意思 WQ DRAINING 1 lt lt 6 internal workqueue is draining WQ RESCUE
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 检查另一种形式的线程是否仍在运行

    我有一个涉及两个窗体的 Windows 窗体应用程序 子表单用于将数据导出到 CSV 文件 并使用后台工作者写入文件 当这种情况发生时 我隐藏了表格 当后台工作程序运行时 父窗体仍然处于活动状态 因此即使后台工作程序正在写入文件 用户也可以
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd

随机推荐

  • 保护对 Kafka Connect REST API 的访问

    Kafka Connect 的 REST API 不安全且未经过身份验证 由于它未经身份验证 因此任何人都可以轻松访问连接器或任务的配置 由于这些配置可能包含如何访问源系统 在 SourceConnector 的情况下 和目标系统 在 Si
  • Windows 中哪个进程是用户特定的?

    我想知道 Windows 中的哪个进程是特定于用户的 我的意思是它是为每个用户登录创建的 我尝试了 explorer exe 但是当您切换用户并登录新帐户时 它会在我的代码中显示旧的登录名 基本上我只需要记录在应用程序中登录的用户 如果您需
  • 在 Outlook 2016 中添加上下文菜单项

    在 Outlook 2007 中 当用户右键单击邮件项目时 以下代码将菜单项添加到上下文菜单中 然而在 Outlook 2016 中这不起作用 这段代码根本没有被执行 Sub Application ItemContextMenuDispl
  • Android,我看到堆在增长,但我希望它停止

    我看到我的堆不断增长 并且我知道它最终会在任何设备上崩溃 因为它一直在增长 Grow heap frag case 在整个日志中都可以看到 在我的手机上 当使用 32mb 时 应用程序就会崩溃 其他手机当然是 16mb 如果有那么少的资源运
  • 单击按钮即可更新 asp.net 表

    我是 ASP NET 的新手 遇到了一个非常愚蠢的问题 但我无法弄清楚 我有一个表单 由 page load 上的数据库数据填充 用户更新表单的输入文本并单击 更新 按钮 它会更新 但会使用旧数据进行更新 为什么要用旧数据更新它 这是asp
  • 轨道 HAML 表格

    我目前正在尝试将 ERB 布局转换为 HAML 这是我不断收到的错误 index html haml 18 syntax error unexpected n hamlout format 这是 HAML 页面 row fluid span
  • 如何配置log4j只保留最近7天的日志文件?

    我在使用多个 Java 应用程序时遇到以下日志记录问题log4j用于记录 我希望日志文件每天轮换 例如 log 2010 09 10 log 2010 09 09 log 2010 09 08 log 2010 09 07 log 2010
  • 将单元测试添加到遗留代码[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您是否曾经在事后向遗留代码中添加过单元测试 代码有多复杂 存根和模拟所有内容有多困难 最终的结果值得吗 我发现最好的方法是逐步添加单元测试 而不
  • 如何在 Windows 上的 Perl 中将具有 UTF-8 文件名的文件复制到另一个 UTF-8 文件名?

    例如 给定一个空文件 txt 我该如何制作一个名为 txt copy 我第一次破解它设法访问该文件并创建新文件名 但生成的副本 txt copy 这是我的第一次尝试 usr bin env perl use strict use warni
  • d3 onclick 获取具体路径/栏参考

    如果我有 d3 dc 图表 并且我设置了一个单击事件处理程序 如下所示 var data city New York neighborhood N A hits 200 city New York neighborhood Brooklyn
  • 通过键合并数据框中的行

    如果我有一个带有关键列和数据列的数据框 就像这样 df lt cbind key c Jane Jane Sam Sam Mary var1 c a NA a a c var2 c NA b NA b d key var1 var2 Jan
  • 添加 IIS UrlRewrite 似乎会破坏本地 IIS 服务器上的调试

    这个问题让我发疯 我正在开发一个最近创建的项目 突然我无法调试该特定项目 我使用带有 IIS UrlRewrite 2 模块的本地 IIS 7 5 我的开发机器是 Windows 7 x64 带有 Visual Studio 2010 Pr
  • Visual Studio 2010 中 applicationhost.config 的 IIS Express 路径

    有没有办法告诉 Visual Studio 2010 在启动 IIS Express 时对 config 参数使用什么值 使用 Process Explorer 我可以看到 iisexpress exe 进程由 Visual Studio
  • CUDA中x方向的索贝尔滤波器

    我正在尝试在每个像素的 x 方向上对灰度图像应用索贝尔滤波器并显示结果 X 方向索贝尔滤波器为 1 0 1 2 0 2 1 0 1 我没有得到所需的结果 有人可以指出我的错误吗 我正在尝试使用纹理 但我不太确定我是否正确使用了它 inclu
  • 如何以树形视图显示消息回复? Java 和休眠

    我有消息 需要显示十个 例如 第一个 根 回复以及对其自身的所有回复 并且它应该看起来像一棵树 标准消息和树状回复视图 你知道 所以 问题是 如何从数据库获取它 我正在使用休眠 据我所知 它将需要很多时间 递归地检索整个集合本身以及所有子树
  • Emacs - 如何避免或替换错误的字符编码?

    假设我收到用 MS Word 编写并保存为纯文本 txt 的西班牙语文本 不幸的是 所有的西班牙口音都是这样显示的 Un 372ltimo an 341lisis 谁能告诉我如何避免这种情况 或者至少如何替换这些字符 替换正则表达式函数根本
  • PHP - 验证函数返回 true | false,如果 false 则返回一条消息

    我有一个验证函数 它返回true or false 但是 我希望它提供以下信息问题是什么 当有一个时 假设这个函数是这样的 function is valid val result true if rule 1 not met result
  • 在 Visual Studio 中运行多个 NUnit 项目

    我有一个包含多个项目的解决方案 包括 NUnit 测试项目 所以解决方案看起来像这样 使用通用名称 这些不是实际名称 Solution Project1 Project1 Test Project2 Project2 Test Projec
  • 用于在 MySQL 中执行非常大 (20 GB) .sql 文件的更高速度选项

    为了响应政府的数据请求 我的公司收到了一个 20 GB 的 sql 文件 我没有太多选择来获取不同格式的数据 因此我需要选择如何在合理的时间内导入数据 我使用 Navicat 的批处理执行工具在高端服务器 Win 2008 64 位 MyS
  • “#define STR(a) #a”有什么作用?

    我正在阅读phoneME的源代码 它是一个 FOSS JavaME 实现 它是用 C 编写的 我偶然发现了这一点 Makes a string of the argument which is not macro expanded defi