Stringify C 预处理器

2023-12-09

这是我的第一篇文章,所以如果我太含糊或提供了每个人都会直观地假设的信息,请告诉我。

我对写作很陌生C我只是想更好地了解预处理。我正在编写一个简单的程序,可以使用直接从控制台接收参数gcc -Wall -std=c99 -DSEED=argument,其中我的参数应该是一个整数,或者如果-D未定义,用户将输入它。

SEED 值仅用于srand()。我很困惑为什么如果我放入一个代码我的代码将无法编译-DSEED=a作为我的论点,如果我把-DSEED=1它会编译。我收到“âaâ undeclared (first use in this function)”错误,并且真的不明白两者之间的区别。我以为#define将变量类型与输入相匹配,因此如果我输入“a”#SEED 将是一个 char,如果我输入“1”#SEED 将是一个 int。

如果未定义 SEED,我将使用#ifndef SEED命令,这效果很好。 我想我应该“字符串化”输入SEED然后可以检查它是否是整数。在线阅读一些文章后,我尝试使用:

#ifndef SEED
    //code
#else
    #define TO_STRING( input ) #input
    char c;
    c = TO_STRING( SEED )
    //Then I was going to use c to figure out if it was an int.
#endif

这是行不通的,任何人能够指出您认为我可能存在的任何误解,我们将不胜感激。

编辑 - 所以我确实弄清楚为什么我在尝试时收到错误消息-DSEED=a,因为它将它作为变量读取。


字符串化#define您需要使用两步方法:

#define _STRINGIFY(s) #s
#define STRINGIFY(s) _STRINGIFY(s)

...

#define SEED 123

...

const char * pszSeed = STRINGIFY(SEED); /* 'pszSeed' would point to "123" form here on. */

如果您只想使用一个字符,只需通过以下方式访问它即可*pszSeed or pszSeed[0].

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

Stringify C 预处理器 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • requirements.txt 中的安装时依赖项

    我正在使用 tox 准备 venv 并运行单元测试 我的应用程序需要 openopt 库 该库又导入numpy distutils core在其 setup py 中 无论我如何在我的requirements txt中订购numpy和ope
  • 分配给大R数据框[重复]

    这个问题在这里已经有答案了 在 R 中 我通过以下方式创建数据框 data lt data frame dummy rep dummy 10000 data number 0 data another 1 当我运行一个为数据框分配值的 fo
  • 如何在代码中设置colorAccent?

    我想在代码中更改我的应用程序的主题 所以我用谷歌搜索它 不幸的是 我找不到任何方法 在java代码中设置colorAccent 我不想像这样在 xml 中设置这个属性
  • Tkinter 和多线程

    我使用以下代码来检查 Tkinter 是否与多线程一起工作 但是下面的代码不起作用 Gui一运行就没有响应 谁能解释一下为什么它不起作用 from threading import Thread import tkinter as tk w
  • HashMap 应该是未排序的,但仍然根据键排序

    根据这些 http docs oracle com javase 6 docs api java util HashMap html HashMap LinkedHashMap 和 TreeMap 的区别 java初学者 如何在哈希图中对键
  • Pygame 显示无响应

    因此 我尝试为使用精灵进行 X 和 Y 运动的基本 2D Python 游戏创建基础 然而 尽管这里的代码试图screen fill and screen blit playerX 50 playerY 50 player pygame i
  • 帆蓝图生命周期

    我需要向结果添加一些额外的数据find蓝图 我找到了这个解决方案 module exports find function req res return sails hooks blueprints middleware find req
  • 在 Visual Studio 中引用 system.management.automation.dll

    我开始研究 PowerShell 模型和管理单元开发 我注意到的第一件事是引用 System management automation dll 然而 在 Visual Studio 中 NET 选项卡没有该程序集 也无法浏览到 C win
  • 如何刷新Google地图中的坐标?

    我可以在点击刷新按钮时刷新谷歌地图 但它显示的是旧坐标 在某些区域 它显示矩形图像 其中有十字图像 错误在哪里或者我必须对其进行哪些修改 这是我的代码 public class GmapActivity extends MapActivit
  • Julia:为什么共享内存多线程没有给我带来加速?

    我想在 Julia 中使用共享内存多线程 正如 Threads threads 宏所做的那样 我可以使用 ccall jl threading run 来执行此操作 虽然我的代码现在并行运行 但我没有获得预期的加速 以下代码旨在作为我正在采
  • 是否可以保证使用 @PostConstruct 注解的方法先于同一 bean 中使用 @Scheduled 的方法执行?

    假设我正在定义一个缓存 bean 它将在应用程序启动时初始化 并以固定的时间间隔刷新 如下所示 Component public class Cache PostConstruct public void initializeCache S
  • 如何检查没有。使用 MYSQLI_STMT_PREPARE 和 MYSQLI_FETCH_ARRAY 时返回的行数?

    我以为我可以用MYSQLI STMT NUM ROWS and MYSQLI STMT STORE RESULT检查是否有 返回的行数 参见注释行 1 2 3 但在下面的上下文中似乎并非如此 此代码确实有效 没有注释行 但我试图添加额外的检
  • python 按周或月分割 pandas 数据框,并根据这些 sp 对数据进行分组

    DateOccurred CostCentre TimeDifference 03 09 2012 2073 28138 03 09 2012 6078 34844 03 09 2012 8273 31215 03 09 2012 8367
  • Pandas 在读取 CSV 之前忽略前几行

    我正在使用 Pandas 库和 Python 我有一个 Excel 文件 在 Excel 工作表的顶部有一些标题信息 我不需要这些信息来提取数据 但是 标题信息可能需要更长的行 因此无法预测它有多长 所以 我的数据提取应该从 ID 的地方开
  • 从基础模块调用动态特征代码

    我试图实现一个动态功能 从我的基本模块中我应该调用该功能中的一些方法 但它只能从该功能中调用基本方法 有什么方法可以使功能代码从基本模块访问 我了解未安装功能时会发生什么 我已经使用默认的谷歌文档实现了它 所以我没有不同的代码或实现 今天没
  • 在r中使用read_csv导入多个csv文件

    我有一个包含多个 csv 文件名称的向量 library readr data lt c categories csv customers csv employees csv employee territories csv order d
  • InternalsVisibleTo 属性不起作用

    我正在尝试使用InternalsVisibleToassembly 属性 使 NET 类库中的内部类对我的单元测试项目可见 由于某种原因 我不断收到一条错误消息 MyClassName 由于其保护级别而无法访问 两个程序集都已签名 并且我在
  • 将表单结果从联系表单 7 导出到 PDF (fPDF)

    我正在尝试将用户在 WordPress 中的联系表单 7 中输入的值通过 fpdf 导出为 PDF 这就是我所设置的 我可以生成 PDF 但没有从表单动态生成的值 函数 php add action wpcf7 before send ma
  • 角度 $setPristine() 不起作用

    我正在尝试使用 Angular 的内置表单函数 特别是setPristine 清除用户提交时的表单 我的控制器可以访问 scope newForm 我的形式 及其所有方法 但正在运行 scope newForm setPristine 没有
  • Stringify C 预处理器

    这是我的第一篇文章 所以如果我太含糊或提供了每个人都会直观地假设的信息 请告诉我 我对写作很陌生C我只是想更好地了解预处理 我正在编写一个简单的程序 可以使用直接从控制台接收参数gcc Wall std c99 DSEED argument