有人能准确解释一下以下定义在 C 标准中关于指令的含义吗

2023-12-02

我真正需要知道的是指令开始之前允许使用哪些字符,因为我们都知道我们可以拥有new line字符和空白指令开始之前的字符前 ( # )现在我阅读了关于此的 C 标准,并找到了以下定义来解释这一点:

预处理指令由一系列满足以下约束的预处理标记组成:序列中的第一个标记是 # 预处理标记,它(在翻译阶段 4 开始时)是源文件中的第一个字符(可以选择在白色之后)不包含换行符的空格)或紧随包含至少一个换行符的空白的空格。“C 标准 - 请阅读此处的定义”

现在我真正需要知道的是: 他们是什么意思

(可选地在空格之后不包含“换行”字符) 或跟随空格至少包含一个“换行”字符

the

不包含换行符

and

至少包含一个换行符

上面的定义是我不明白的,我需要知道它到底意味着什么,我需要知道

换行符可以出现在 # token 之前还是 # token 之后,C 标准没有说明换行符可以出现在哪里(它只指出“不包含换行符”和“包含至少一个换行符”) (它没有说明在这种情况下换行符是否可以出现在 # 标记之前或 # 标记之后)即使它已经说明了在上述情况下空白字符可以出现的位置(在 # 标记之前)


这一切基本上意味着要么#位于行首或者前面只有空格#在给定的线上。

这部分:

源文件中的第一个字符(可以选择在不包含换行符的空格之后)

前面允许有空格#如果它位于文件的第一行,而这部分:

或后面包含至少一个换行符的空白。

前面允许有空格#在任何后续行上。

例如:

  #include <stdio.h>   // spaces before the first line
  #include <stdlib.h>  // spaces before another line, i.e, spaces and newline before a token
int x;   #include <string.h> // not allowed, other tokens preceed on same line
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有人能准确解释一下以下定义在 C 标准中关于指令的含义吗 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0

随机推荐

  • 在 R闪亮中保存传单地图

    我创建了一个应用程序 用户可以在其中修改传单地图 并且我想在 pdf 报告中使用此地图 我有 1 安装了leaflet webshot和htmlwidget包 2 安装PhantomJS 下面是代码的简化版本 服务器 R library s
  • 带有内容处置的文件:内联有时仍然提示下载

    我的主题行说了我要问的大部分内容 我有一个网站 可以输出各种格式的报告 HTML CSV TSV Excel 等 只要有可能 我希望这些文件显示在浏览器中 为此 我设置了标题 使 Content Disposition 成为 内联 这对于不
  • 索引未应​​用于索引视图

    我有一个索引视图 但是当我在该视图上运行查询时 不会应用基于视图构建的索引 并且查询在没有索引的情况下运行 下面是我的虚拟脚本 表 视图 视图上的索引 CREATE TABLE P Test PID INT IDENTITY TID INT
  • 发送二进制文件 TcpClient - 文件大于源

    为了涉足网络编程 我编写了一个小控制台应用程序来将 png 文件发送到服务器 另一个控制台应用程序 服务器写入的文件比源 png 文件稍大 而且它不会打开 客户端应用程序的代码是 private static void SendFile u
  • 样式不适用于垂直方向的拇指

    我正在创造垂直范围栏我改变了 webkit appearance slider vertical 我还更改了输入范围栏的属性 例如 height width webkit slider runnable track 和 webkit sli
  • LEMP + wordpress 文件权限能够编辑、升级和使用 sftp 客户端

    我正在尝试管理运行nginx的debian网络服务器上的文件权限 以便wordpress可以编辑 上传和升级而无需使用ftp 我还希望能够使用我的用户帐户使用 sftp 登录 我知道这个问题之前已经被问过 请参阅here or here 但
  • 导入 Orange 返回“ImportError:没有名为 Orange 的模块”

    我想使用 Orange 包科学分析 安装于x86 64 Ubuntu 12 04 with Python 2 7 3 进展顺利 使用sudo easy install orange 但是 该包似乎无法直接使用 11 30 43 leon t
  • 使用嵌套 ng-repeat“观察者反应函数不应更改模型”是什么意思?

    这是代码的简化版本 即使生成的 HTML 看起来不错 我也会收到记录的错误 这个异常意味着什么 为什么我会得到它 索引 html div div strong a strong div b div div div
  • 为什么 Oracle 在取消引用对象时需要视图中的列的别名?

    为什么 Oracle 在取消引用对象时需要视图中的列的别名 例如 CREATE VIEW view AS SELECT t eno t workdept dname t salary FROM table t ERROR at line 1
  • 使用 d3-zoom 与 WebGL 交互

    我正在尝试收集一个小示例 该示例使用 d3 zoom 为使用 WebGL 渲染的画布元素提供简单的交互性 我想做的就是提供平移 缩放 这使用 4x4 变换矩阵相当简单 我遇到的问题是缩放 缩放 如果您查看一些 d3 zoom 示例 您会发现
  • 溢出-x 被溢出-y 覆盖[重复]

    这个问题在这里已经有答案了 看起来overflow x and overflow y不要按照我期望的方式行事 如果我设置overflow x可见 并且overflow y到汽车 overflow x不会表现为可见 而是表现为隐藏 我是否错过
  • ASP.NET 应用程序正在显示美国日期格式

    One我的开发应用程序今天开始显示美国格式的短日期 而我期待的是英国格式 日期正在使用date ToShortDateString 我已经检查了我的区域设置 键盘设置 浏览器设置和 web config 这些都设置为英语 英国 或未更改 我
  • C++20 模块“循环依赖”

    我试图将一个模块包含在另一个模块中 但由于以下错误而无法编译 无法构建以下源文件 因为它们之间存在循环依赖性 Module1 ixx 依赖于 Module2 ixx 依赖于 Module1 ixx 我想要 modClass1 包含 modC
  • 适用于 iOS 4.0 应用程序的 NSFileProtectionComplete

    我看到了有关 NSFileProtectionComplete 和保护应用程序数据的 WWDC 2010 视频 有没有什么例子 有人有示例代码可以分享吗 请参阅 NSFileManager 类文档 该文件以加密方式存储 格式化在磁盘上且无法
  • 如何仅解析字符串中的浮点数?

    foreach object item in listBox1 SelectedItems string curItem item ToString var parts curItem Split XY ToCharArray String
  • jline 保持底部提示

    我在用jline我有一个整洁的ConsoleReader一切都很好 但是 如果您在提示符中输入某些内容 并且 stdout 上有输出 来自另一个线程 则输出会拆分您正在输入的单词 命令 我怎样才能保留jline终端底部有提示吗 我在用jli
  • 在构造函数中调用函数时出现 NameError

    我通过调用构造函数中的函数来运行下面的代码 First gt gt gt class PrintName def init self value self value value printName self value def print
  • WPF 网格中的独立宽度

    我在 WPF 中有一个 2 行 2 列的网格 我希望每行的列宽都是独立的 我尝试过 自动 但没有成功 这里用一张图片来解释 我怎样才能使用网格来完成这个任务 如果您必须使用网格布局 那么您有几个选择 选项 1 将每一行设为单列 然后在您想要
  • 如何在UIView上绘制签名

    我是 ios 新手 我需要创建一个可以签名的文本视图或标签 就像这张图片 您可以在上面签名UIView首先subclass UIView和你的子类UIView应该是这样的 签名视图 h import
  • 有人能准确解释一下以下定义在 C 标准中关于指令的含义吗

    我真正需要知道的是指令开始之前允许使用哪些字符 因为我们都知道我们可以拥有new line字符和空白指令开始之前的字符前 现在我阅读了关于此的 C 标准 并找到了以下定义来解释这一点 预处理指令由一系列满足以下约束的预处理标记组成 序列中的