首页 > 其他分享 >typedef&define

typedef&define

时间:2024-05-15 14:21:50浏览次数:9  
标签:p2 typedef p1 int INTERGE define

typedef

(1)定义函数别名

typedef int (*myfun)(int, int);

使用方法:

myfun test_fun;
//相当于 int test_fun(int, int);
//可以用来声明函数,最常用是在结构体里

(2)给变量类型重新定义

typedef struct{
    int a;
    int b;
}MY_TYPE;

typedef 与 #define 的区别

(1)#define可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。例如:

#define INTERGE int;
unsigned INTERGE n;  //没问题
typedef int INTERGE;
unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned

(2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。例如:

#define PTR_INT int *
PTR_INT p1, p2;        //p1、p2 类型不相同,宏展开后变为int *p1, p2;
typedef int * PTR_INT
PTR_INT p1, p2;        //p1、p2 类型相同,它们都是指向 int 类型的指针。

简而言之,#define 只是字面上的替换,由预处理器执行,#define A B 相当于打开编辑器的替换功能,把所有的 B 替换成 A。

与 #define 不同,typedef 具有以下三个特点:

  • 1.typedef 给出的符号名称仅限于对类型,而不是对值。
  • 2.typedef 的解释由编译器,而不是预处理器执行。并不是简单的文本替换。
  • 3.虽然范围有限,但是在其受限范围内 typedef 比 #define 灵活。

标签:p2,typedef,p1,int,INTERGE,define
From: https://www.cnblogs.com/jabari12/p/18193763

相关文章

  • ifndef_ define_ endif 作用
    #ifndef它是ifnotdefine的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种----条件编译。在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用#ifndef宏定义,多个......
  • ..\HAL_LIB\Inc\stm32l4xx_hal_rcc_ex.h(2424): error: #20: identifier "HAL_Sta
    stm32工程编译时遇到这个错误,显示HAL_StatusTypeDef没有被定义,但是go todefinition又能找到定义 后来在网上寻找解决办法,结果发现竟然是#include"stm32l4xx_hal_spi.h"#include"stm32l4xx_hal.h"这两个的顺序问题,#include"stm32l4xx_hal.h"头文件包含必须在最前面,真是......
  • qt 使用windows 的USB库 hid.dll 报错 :undefined reference to `HidD_GetAttributes(v
     1、cmakeLists.txt文件引入相应的库: cmake_minimum_required(VERSION3.5)project(test1LANGUAGESCXX)file(GLOBSRC./*.cpp./*.h)add_executable(test1${SRC})include(GNUInstallDirs)target_link_libraries(${PROJECT_NAME}hidsetupapi)inst......
  • TypeError: Cannot read properties of undefined (reading 'trim')
     运行时提示:TypeError:Cannotreadpropertiesofundefined(reading'trim')问题排查:1、确认trim()属性是否存在,这个是js去除字符串左右空格,属性是存在的2、确认this.form.proxy_url是否存在3、确认确认this.form.proxy_url的值是否为undefined和null通过排查和打印,con......
  • SystemVerilog -- 2.21 Data Types ~ SystemVerilog typedef and alias
    SystemVerilogtypedefandaliasTypedef在复杂的测试平台中,某些变量声明可能具有更长的数据类型规范,后者需要在测试平台的多个位置使用。在这种情况下,我们可以使用a为现有数据类型提供用户定义的名称。然后,可以在整个代码中使用新的数据类型,因此如果需要,无需在多个位置进行编......
  • macOS OpenCV报错:Undefined symbols for architecture x86_64
    这个错误可能是链接的OpenCV库不对,我这里的情况是我代码使用的GCC编译器,但是通过brewinstallopencv安装的OpenCV是使用clang编译的,代码也使用clang编译器可以解决这个问题。要查看opencv的编译信息,可以使用这个命令opencv_version-v我这边输出Generalconfigurationfo......
  • new webpack 的 DefinePlugin 与 ProvidePlugin
    一、DefinePluginDefinePlugin允许创建一个在编译时可以配置的全局常量。这可能会对开发模式和生产模式的构建允许不同的行为非常有用。如果在开发构建中,而不在发布构建中执行日志记录,则可以使用全局常量来决定是否记录日志。这就是DefinePlugin的用处,设置它,就可以忘记开发环境......
  • error: possibly undefined macro: AC_CHECK_HEADERS
    Hi,Ihavebeengettingthebelowerrorafterrunning./bootstrap:autoreconf:running:/usr/bin/autoconf--force--warnings=allconfigure.ac:133:error:possiblyundefinedmacro:AC_CHECK_HEADERSIfthistokenandothersarelegitimate,pleaseusem4_pat......
  • 修改元素样式报错:Cannot set properties of undefined (setting 'visibility')
    1、正常书写代码如下:<divclass="cl"><divid="mask"><spanid="close">X</span></div></div><!--JS代码如下--><script>letclose=document.getElement......
  • Cadence Virtuoso 打开 Layout 显示 undefined packet
    软件版本:IC617操作系统:CentOS解决办法:临时方法打开layout后。按住shift,点选左边layers窗口中的任一层次,弹出displayResourceEditor窗口。file->load。选择需要的drf文件加载即可。永久方法把display.drf文件复制到你的virtuoso启动目录即可参考链接......