I wonder if typedef and #define are the same in ?

推荐答案

#define is a preprocessor token: the compiler itself will never see it.
typedef is a compiler token: the preprocessor does not care about it.

您可以使用其中的一种或另一种来达到相同的效果,但最好是根据您的需要使用适当的一种

#define MY_TYPE int
typedef int My_Type;

当事情变得"毛茸茸的"时,使用适当的工具就能使它变得正确.

#define FX_TYPE void (*)(int)
typedef void (*stdfx)(int);

void fx_typ(stdfx fx); /* ok */
void fx_def(FX_TYPE fx); /* error */

C++相关问答推荐

在#include中使用C宏变量

我编译了一个新的c程序,并收到以下错误

__VA_OPT__(,)是否可以检测后面没有任何内容的尾随逗号?

在C中将通用字符名称转换为UTF-8

Ruby C Api处理异常

当输入负数时,排序算法存在问题

如何在C中打印包含扫描字符和整数的语句?

编译器如何处理具有更复杂值的枚举?

变量的作用域是否在C中的循环未定义行为或实现定义行为的参数中初始化?

无法访问共享目标文件内的共享指针

如何在不读取整个字符串的情况下删除UTF8字符串的尾随空格以提高性能?

Valgrind正在使用一个Fexecve电话报告不可能发生的事情

哪个首选包含第三个库S头文件?#INCLUDE;文件名或#INCLUDE<;文件名&>?

无算术运算符和循环的二进制乘法

在分配内存后使用指针是未定义的行为吗?

为什么孤儿进程在 Linux 中没有被 PID 1 采用,就像我读过的一本书中声称的那样?

这些表达式是否涉及 C 中定义的复合文字?

SSE 向量与 Epsilon 的比较

cs50拼写器分配中的无限循环

如何确定 C 程序中的可用堆内存