社区
C++ 语言
帖子详情
如何知道类型已经被定义过?
NewVC1978
2006-12-25 07:13:12
例如程序在某个地方已经用typedef定义了某个类型,我如何知道该类型在之前是否已被定义过?
typedef int myint;
或者 #define int myint
#ifdef myint
#undef myint // 这2行代码不起作用
有没有什么预编译指令可以知道呢?
...全文
562
17
打赏
收藏
如何知道类型已经被定义过?
例如程序在某个地方已经用typedef定义了某个类型,我如何知道该类型在之前是否已被定义过? typedef int myint; 或者 #define int myint #ifdef myint #undef myint // 这2行代码不起作用 有没有什么预编译指令可以知道呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hertz2007
2007-01-03
打赏
举报
回复
好,现在就算你检测了是否已经定义过类型。
那么,新的问题是,你怎么检测你检测过?
如此循环,无有天日也!
NewVC1978
2007-01-03
打赏
举报
回复
谢谢,taodm的回答很专业,我现在明白了
也就是:typedef 定义的变量类型是没有预编译指令可以进行检测的。
谢谢,祝大家新年好运!
taodm
2006-12-29
打赏
举报
回复
按C和C++标准,没有办法知道是否进行过typedef,只能判断是否进行过#define
虽然部分编译器能用对typedef进行#ifdef判断。
所以,楼主的问题有2个解
方法1,如lann64(昆仑大鹏@迦楼罗) 所说,用#define代替typedef
方法2,将所有和编译环境相关的类型定义全部放在一个专门的.h里,根据编译环境#include相应的.h。
NewVC1978
2006-12-28
打赏
举报
回复
"楼主什么鸟态度?!楼上完全可以不必理他!"
?????????我不知道哪个帖子得罪了阁下,或者我帖子带有粗鲁的言语?
本来就事论事,问个问题而已,你这样说话有点那个了吧。
==================
算了,不问了,没意思,懂问题的人不多,不懂的人一堆。
WinWing
2006-12-27
打赏
举报
回复
楼主什么鸟态度?!楼上完全可以不必理他!
lann64
2006-12-27
打赏
举报
回复
请楼主放尊重点,谁也不欠你的,人身攻击的话留着对自己说去吧。
就你那点问题,我第一个贴已经给出了解决办法,你的系统装过MSSDK升级包,那么或者系统定义了额外的环境变量或者需要多加个头文件,无论哪个,你都会有另外一个宏变量用来判断,找到那个宏变量就行了。最不济的方法,自己定义一个变量,在不同的系统间转换时修改这个变量定义就行了。
NewVC1978
2006-12-27
打赏
举报
回复
我才不明白lann64呢,还是一星用户,这个都看不懂,还胡言乱语!
====================================
#define myint int
#ifdef myint 此时返回真,可以知道myint类型被定义过了
typedef int myint;
#ifdef myint? 返回什么?不能返回真,无法诊断myint类型是否被定义过。
==================================
上面两种“类型”定义方式,而非“变量”定义方式!
说白了我的问题来源:我使用了GDI+的代码在自己的编译环境下编译正常(装过MSSDK升级包),
但是拷贝到其他系统上编译就出错了,报告ULONGPTR 类型没有定义,
当然解决问题的方法是简单的,只需要在头文件添加 typedef unsigned long* ULONGPTR
但是这样一来拷贝回我的电脑就出现类型重复定义,我想问大家的是有没有什么指令可以解决反复修改代码才能编译通过的问题?
lin_style
2006-12-26
打赏
举报
回复
改成
新手学C++
todototry
2006-12-26
打赏
举报
回复
个人意见,高手多多指教
todototry
2006-12-26
打赏
举报
回复
namespace
todototry
2006-12-26
打赏
举报
回复
名字空间建立
flyingwow99
2006-12-26
打赏
举报
回复
#define myint int //注意这里的写法!!
#ifdef myint //这里是检测的到的
#undef myint
WinWing
2006-12-26
打赏
举报
回复
不明白LZ的意思
lann64
2006-12-26
打赏
举报
回复
越看越不明白楼主想干嘛?
变量是否定义过的检测仅仅在编程环境下才有用,编译完到了运行期,变量的名字都不存在了,还有什么好检测的。做到编译器排错已经足够了。
NewVC1978
2006-12-26
打赏
举报
回复
flyingwow99,也就是说使用typedef 就没有办法了?
#define myint int
#ifdef myint 返回真
typedef int myint;
#ifdef myint? 返回什么?
NewVC1978
2006-12-26
打赏
举报
回复
楼上的大哥首先祝你节日快乐,
其次没有明白我的意思,我不知道其他包含文件是否对某个类型进行了定义
除了编译器排错,还有没有其他技术获得某个类型是否已经被定义过。
例如你想定义一个myint类型的类,但是myint是内建的或者已经在别处定义过了的数据类型,你的定义编译通不过,这是编译器帮你检查了;有没有自己写代码诊断myint是否已经被定义的呢?
lann64
2006-12-25
打赏
举报
回复
用另一个宏变量来控制。
#ifdef hmyint
...
#else
typedef int myint;
#end
如何打造高性能、高可用、无限扩展的软件
定义
分布式存储?
传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈...本期的直播课程将邀请浪潮商用机器的二位分布式存储专家为大家讲解如何通过的解决方案搭建大规模高并发下的软件
定义
分布式存储。
matlab语言
定义
变量
类型
,matlab
定义
变量-MATLAB,变量
本教程分享:《matlab
定义
变量》,matlab中变量如何
定义
?可以用sym 或者 syms
定义
变量。如果没有提前
定义
的话,可以在使用时可直接进行赋值使用。MATLAB中变量名以字母开头,后接字母、数字或下划线,最多63个字符...
java枚举
类型
定义
_java中的枚举
类型
怎么
定义
?
展开全部Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自62616964757a686964616fe59b9ee7ad9431333236366331己的变量,可以
定义
自己的方法,可以实现一个或者多个接口。 当我们在声明一个...
C语言中用户
定义
类型
(typedef)的作用
typedef为C语言的关键字,作用是为一种数据
类型
定义
一个新名字。这里的数据
类型
包括基本数据
类型
(int,char等)和自
定义
的数据
类型
(struct等),但不能创建新
类型
。在编程中使用typedef目的一般有两个,一个是给...
搞不懂vue3.0 ref和reactive
类型
定义
有什么区别吗?看这里
首先我们都
知道
ref函数和reactive函数都是用来
定义
响应式数据; 但是reactive更适合
定义
复杂的数据
类型
(json/arr)、ref适合
定义
基本数据
类型
(可接收基本数据
类型
和对象) reactive: (1)它的响应式是更加‘深层次...
C++ 语言
64,666
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章