int ** 和constint **都是没有限定符的指针类型,它们所指向的类型是不一样的(int **指向int *,而constint **指向const int *),所以它们是不兼容的,根据指针赋值条件来判断,这两个指针之间不能相互赋值。 实际上和const int **相兼容的类型是const int**const,所以下面代码是合法的: const int * *cons...
int ** 和const int **都是没有限定符的指针类型,它们所指向的类型是不一样的(int **指向int *,而const int **指向const int *),所以它们是不兼容的,根据指针赋值条件来判断,这两个指针之间不能相互赋值。 实际上和const int **相兼容的类型是const int * *const,所以下面代码是合法的: const int *...
则printf("int max: %s\n", STR(INT_MAX))输出为int max: 0x7fffffff;而printf("%d\n", CONS(A, A))输出为200。 这种分层展开的技术称为宏的Argument Prescan,参见附录6.1。 【'#'和'##'的一些应用特例】 1. 合并匿名变量名 1 #define ___ANONYMOUS1(type, var, line) type var##line 2 #...
若在程序里面写if(time < MAX_TIME){...},则编译器在处理该代码前会将MAX_TIME替换为1000。 注意,这种情况下使用const定义常量可能更好,如const int MAX_TIME = 1000;。因为const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行简单的字符文本替换,没有类型安全检查,...
在上述代码中,我们使用typedef定义了一个别名int_ptr_t,用来指代int*这个指针类型.然后函数的参数为const int_ptr_t. 然后我们编译一下,出现了警告: ╰─❯ gcc main.c main.c:In function ‘main’:main.c:14:10:warning:passing argument1of ‘func’ discards ‘const’ qualifier from pointer targettype...
char * const pointer;//指针的值不能被修改 作用域 代码块作用域 {} 文件作用域 文件内部 原型作用域 函数原型中声明的参数名 函数作用域 链接属性 external,internal,代码块外部的缺省链接属性为external,代码块内部的缺省链接属性为internal,外部的链接属性可以通过static关键字来修改。 存储类型 static关键...
1.1 宏和const变量的不同 #define 定义的宏常量可以直接使用 #define 定义的宏常量本质为字面量,不占用内存,而const 常量占用内存 1.2 宏与函数不同 - 宏不是函数, 使用宏没有函数的调用过程 - 函数调用先传递参数值,然后跳转执行函数体,最后返回
exp_10.c:7:6:warning: passing argument 1 of 'foo' from incompatible pointer type foo(argv); ^ exp_10.c:1:6:note: expected 'const char **' but argument is of type 'char **' void foo(const char **p) ^ 确实,这段代码在编译的时候给出了一段警告。但是,最终代码还是能够编译成功。简...
void *memchr(void const *a, int ch, size_t length); void *memset(void *a, int ch, size_t length); 任何类型的指针都可以转换为void*坟墓里指针。 union{ int a; float b; char c[4]; } x = {5}; 1.如今软件开销的最大之处并非在于编写,而是在于维护。注释如果不正确,那还不如没有。
56: Invalid pointer addition — 指针相加无效57: Irreducible expression tree — 无法执行的表达式运算58: Lvalue required — 需要逻辑值0或非0值59: Macro argument syntax error — 宏参数语法错误60: Macro expansion too long — 宏的扩展以后太长61: Mismatched number of parameters in definition — 定义...