鱼C论坛

 找回密码
 立即注册
查看: 755|回复: 7

[已解决]各位大佬,有没有办法能把c++的关键字禁用

[复制链接]
发表于 2020-6-12 00:20:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,解释一下就是如果我宏定义了int成itn,然后我想只能用itn定义整型,用int会报错,请问这个能做到吗
最佳答案
2020-6-12 00:33:28
恐怕是不行,至少在我的所学范围内做不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-12 00:33:28 | 显示全部楼层    本楼为最佳答案   
恐怕是不行,至少在我的所学范围内做不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 00:38:24 | 显示全部楼层
这样算吗?
  1. #include <iostream>

  2. typedef int itn;

  3. #define int int_delete

  4. itn main() {
  5.     //int val = 100;
  6.     itn val = 100;
  7.     std::cout << val << std::endl;
  8.     return 0;
  9. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 01:39:15 | 显示全部楼层

emmmm,一看直接超纲,我试试吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 01:43:23 | 显示全部楼层

可是这样int还是不可以被禁用,看来是不可以了,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 08:40:09 | 显示全部楼层
int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性就把这个宏整理成头文件,每次编译自己加
但是语言的基本数据类型不可能删掉的,就比如汇编的BYTE WORD等等类型;删掉了软硬件交互那不就歇菜了。
可以看看用开关宏(一种冷门的宏操作),最佳答案楼原理也是同名宏;具体实现见下面的代码
  1. //为了int仍可以使用,提前找好替代_32INT
  2. typedef int  _32INT;

  3. //方案一:通过续行符\欺骗编译器,不然下面的开关功能不可操作
  4. #define int /\
  5. /int
  6. //方案二:直接同名宏;后续什么也不加;宏展开阶段就会产生错误的代码,大概是int a = 0;展开成a = 0;
  7. #define int

  8. _32INT
  9. main (void)
  10. {
  11.      int a = 66;//使用上述两种方案都必定报错a未定义
  12.      _32INT b = 99;
  13.          
  14.          return b;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-12 11:50:44 | 显示全部楼层
CodingCat_k 发表于 2020-6-12 08:40
int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性 ...

用了这个方法后报错说c++不支持默认int
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 11:53:22 | 显示全部楼层
CodingCat_k 发表于 2020-6-12 08:40
int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性 ...

刚刚把typedf放错地方了,现在可以运行成功了,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 09:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表