在c中,是基本数据类型,如“int”“long”“char”“unsigned”...所有的宏? 如果是这样,他们在哪里定义?它们是如何实现的,如“int”类型?是c宏中的原始数据类型?
1
A
回答
6
它们不是宏,它们只是被编译器转换成适当的数据存储和操作。
例如,当你在你的程序有:
int i;
i=5
i+=7;
编译器将其转换为类似于这样:
Allocate sizeof(int) bytes in the stack
Put the number 5 in the allocated space
Retrieve the number on the allocated space, add 7 to it, and save it again at the same location
2
一些标准的类型(通常,像size_t
或uintptr_t
或ptrdiff_t
)被实现为typedef或宏。但编译器需要一些“原始”或“基本”类型(如char
,int
等),它们是内置于编译器中的,并且未在头文件中定义。
0
的基本数据类型等int
,char
,float
等被C标准中定义的,并且编译器知道他们本质。其他类型如uint32_t
是在头文件中定义的typedef,它们是用原始类型定义的。
1
它们不是宏。每种编程语言都需要不是宏的主要类型,而是语言语法树的一部分。编译器会将这些原始数据类型directyl转换成适当的二进制表示形式。
我想你也误解了如何使用宏。有些类型是通过typedef通过其他类型定义的。
typedef unsigned short BOOL;
您可能做到这一点与宏但是这不会给你完整的编译器检查,这就是为什么你应该更喜欢tyepef。
相关问题
- 1. 目标C:原始数据类型
- 2. C#原始数据类型VS .NET CTS类型
- 3. 实体成员应该是原始数据类型还是java数据类型?
- 4. C++中的跨平台原始数据类型
- 5. C中原始数据类型的范围?
- 6. 什么是C++中最大的数字原始数据类型(旧/新标准)
- 7. 查询长的原始数据类型
- 8. 原始数据类型在Java中是线程安全的
- 9. 使用原始数据类型创建自定义类Obj-c
- 10. 关于mybatis的参数类型为原始数据类型?
- 11. NSUserDefaults和原始数据类型?
- 12. Excel - 恢复原始数据类型
- 13. 原始数据类型Vs的对象在目标C
- 14. 参数对象的类型[类型]不是原始的
- 15. Struts 2原始类型的数据传输和类型转换
- 16. 不是原始类型间的数据库迁移
- 17. 什么是“符号”的原始数据在JavaScript类型
- 18. C#初始化整型数据类型
- 19. 在C++函数中传递原始数据类型的最佳做法
- 20. 原始数据类型的数据库返回值(Kohana ORM)
- 21. 与原始类型
- 22. 原始类型是否存在于C#中?
- 23. C中的原始数据类型用于表示CPU-arch的WORD大小
- 24. C#,反射和原始类型
- 25. 原始类型通过C++和CLI
- 26. 转换泛型参数到原始数据类型
- 27. Linux的数据模型和原始类型大小
- 28. 整型为原始类型
- 29. java中的原始数据类型铸造 - 内部逻辑
- 30. 描述原始类型数据的类版本