热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

探讨宏定义在编程中的应用与常见问题解析

#defineWIN32_LONG_TO_INT64_BEGIN\#ifdefWIN32\#definelong__int64\#endifWIN32_LONG_TO
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif

WIN32_LONG_TO_INT64_BEGIN
---------------------
你好,像这样宏定义里边有宏定义,编译报错
error C2121: '#' : invalid character : possibly the result of a macro expansion

我就是想要弄的简写点,该怎么写才对呢?

12 个解决方案

#1


直接这样就好:

#ifdef WIN32
#define long __int64
#endif


引用 楼主 mxmkeep 的回复:
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif

WIN32_LONG_TO_INT64_BEGIN
---------------------
你好,像这样宏定义里边有宏定义,编译报错
error C2121: '#' : invalid character : possibly the result of a macro expansion

我就是想要弄的简写点,该怎么写才对呢?

#2


#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif

去掉宏后面的\
该符号在一个宏要定义为多行时使用

#3


引用 1 楼 turingo 的回复:
直接这样就好:

#ifdef WIN32
#define long __int64
#endif


Quote: 引用 楼主 mxmkeep 的回复:

#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif

WIN32_LONG_TO_INT64_BEGIN
---------------------
你好,像这样宏定义里边有宏定义,编译报错
error C2121: '#' : invalid character : possibly the result of a macro expansion

我就是想要弄的简写点,该怎么写才对呢?

正解

#4


楼上都是正解.

#5


引用 1 楼 turingo 的回复:
直接这样就好:

#ifdef WIN32
#define long __int64
#endif


Quote: 引用 楼主 mxmkeep 的回复:

#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif

WIN32_LONG_TO_INT64_BEGIN
---------------------
你好,像这样宏定义里边有宏定义,编译报错
error C2121: '#' : invalid character : possibly the result of a macro expansion

我就是想要弄的简写点,该怎么写才对呢?


回各位大大,是这样的,我不想每次都想三行,因此想弄个宏,每次写一行就行,结果发现报错了,就很奇怪为什么不行,求解决。

#6


引用 4 楼 qq120848369 的回复:
楼上都是正解.

回各位大大,是这样的,我不想每次都写三行,因此想弄个宏,每次写一行就行,结果发现报错了,就很奇怪为什么不行,求解决。

#7


#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif
预编译的时候 看到的指令是
#define WIN32_LONG_TO_INT64_BEGIN #ifdef WIN32 #define long __int64 #endif

于是 Over

#8


如果先定义一个宏,然后需要多条语句分行写时,需要用到"\",现在看你的代码是每行都是一个完整的宏,所以不需要添加"\"

#9


引用 6 楼 mxmkeep 的回复:
Quote: 引用 4 楼 qq120848369 的回复:

楼上都是正解.

回各位大大,是这样的,我不想每次都写三行,因此想弄个宏,每次写一行就行,结果发现报错了,就很奇怪为什么不行,求解决。
那你这个宏写在什么地方呢?总要包含某个头文件吧
那个头文件里直接写这三行直接包含不是一行都不用写了,更方便?
不能理解你的需求

#10


编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E

#11


引用 7 楼 lin5161678 的回复:
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif
预编译的时候 看到的指令是
#define WIN32_LONG_TO_INT64_BEGIN #ifdef WIN32 #define long __int64 #endif

于是 Over

是这个问题了...有没有解决方法呢?
难道只有用头文件?

#12


宏定义里
不能有预编译指令
代码生成吧,自己做个预预编译器,先处理这种预编译器不支持的宏 

推荐阅读
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文详细介绍了C语言中的基本数据类型,包括整型、浮点型、字符型及其各自的子类型,并探讨了这些类型在不同编译环境下的表现。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍了get和set方法的作用及其在编程中的实现方式,同时探讨了点语法的使用场景。通过具体示例,解释了属性声明与合成存取方法的概念,并补充了相关操作的最佳实践。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • Django 使用slug field时遇到的问题 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
author-avatar
Damon777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有