各位大佬,有没有办法能把c++的关键字禁用
如题,解释一下就是如果我宏定义了int成itn,然后我想只能用itn定义整型,用int会报错,请问这个能做到吗 恐怕是不行,至少在我的所学范围内做不到这样算吗?
#include <iostream>
typedef int itn;
#define int int_delete
itn main() {
//int val = 100;
itn val = 100;
std::cout << val << std::endl;
return 0;
}
人造人 发表于 2020-6-12 00:38
这样算吗?
emmmm,一看直接超纲,我试试吧 人造人 发表于 2020-6-12 00:38
这样算吗?
可是这样int还是不可以被禁用,看来是不可以了,谢谢大佬 int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性就把这个宏整理成头文件,每次编译自己加
但是语言的基本数据类型不可能删掉的,就比如汇编的BYTE WORD等等类型;删掉了软硬件交互那不就歇菜了。
可以看看用开关宏(一种冷门的宏操作),最佳答案楼原理也是同名宏;具体实现见下面的代码
//为了int仍可以使用,提前找好替代_32INT
typedef int_32INT;
//方案一:通过续行符\欺骗编译器,不然下面的开关功能不可操作
#define int /\
/int
//方案二:直接同名宏;后续什么也不加;宏展开阶段就会产生错误的代码,大概是int a = 0;展开成a = 0;
#define int
_32INT
main (void)
{
int a = 66;//使用上述两种方案都必定报错a未定义
_32INT b = 99;
return b;
}
CodingCat_k 发表于 2020-6-12 08:40
int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性 ...
用了这个方法后报错说c++不支持默认int CodingCat_k 发表于 2020-6-12 08:40
int禁用顶多是让它无效,关键就是用同名宏欺骗编译器;让代码在预处理阶段就产生错误。
如果想增加移植性 ...
刚刚把typedf放错地方了,现在可以运行成功了,谢谢大佬
页:
[1]