简介:C语言字符串、宏定义及主函数介绍 一、字符串 1、字符串声明 #include <stdio.h>int main() {char str[] = "abc"; //用字符串字面值对字符数组进行初始化,这样就可以把字符串字面值里的所有内容都放到字符数组里(包括'\0'字符)printf("sizeof(str)是%d\n", sizeof(str));//%s占位符从一个...
1)#define name stuff #define 宏名 宏值 2)#define 宏名(参数列表) 表达式 #define name( parament-list ) stuff 二、什么是宏 计算机科学里的宏是一种抽象的,根据一系列预定义的规则进行文本替换。 宏是一种将一系列命令组织在一起,作为一个单独命令来完成特定任务的方式。在编译语言中,宏展开是在编译...
与#define 宏定义相比,使用 const 定义常量的优点在于类型安全,具有更好的可读性和可维护性。 2.1.3 常量宏与 const 常量的比较 常量宏和 const 常量都可以用来定义常量,但它们之间存在一些差异。 类型安全性:常量宏是通过文本替换来实现的,它不会进行类型检查,因此可能存在类型不匹配的风险。而 const 常量是类型...
1.打印LOG宏 #include <stdio.h> // 两个井号连接字符串,避免agrs为空 // 条件式编译 gcc -D DEBUGGER #ifdef DEBUG #define log(frm, args...){\ printf("[%s : %s :
#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。 下面是宏的申明方式: #define name( parament-list ) stuff 其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。 举例:
(1) 简单的宏定义 格式:#define <宏名/标识符> <字符串> eg:#define PI 3.1415926 说明: ①宏名一般用大写 ②宏定义末尾不加分好; ③可以用#undef命令终止宏定义的作用域 ④宏定义可以嵌套 ⑤字符串“”中永远不包含宏 ⑥宏替换在编译前进行,不分配内存,变量定义分配内存,函数调用在编译后程序运行时进行,...
宏另外一个常用功能就是字符串连接,使用##连接需要连接的字符串。如下面代码所示: 1:#defineMACRO_CONCAT( _x, _y ) _x##_y 2:#defineFUNC_PROTO( _handler )inthandler_func_##_handler(int); 3: 4:MACRO_CONCAT( hello, dolly )/* Results in hellodolly */ ...
项目中有个头文件中定义了一个宏定义,比如是 #define CFG_LOGGER_NAME uart 然后,在某个C文件中需要讲这个3转换成对应的字符串类型,即为"uart";很明显,如果按以下的几种方式定义,肯定得不到期望的结果: 方式1: #define CFG_LOGGER_NAME_STR "CFG_LOGGER_NAME" ...
在C语言中,__DATE__是一个特殊的预处理器宏,用于获取当前编译的日期字符串。 __DATE__宏可以在程序中使用,它会在编译时被替换为一个字符串,表示编译源文件时的日期。这个宏的字符串格式是 “MMM DD YYYY”,其中 MMM 表示月份的缩写(例如 Jan、Feb、Mar 等),DD 表示日期,YYYY 表示年份。
TO_STRING首先会将x全部展开(如果x也是一个宏的话),然后再传给TO_STRING1转换为字符串,现在你可以这样: const char *str = TO_STRING( PARAM( ADDPARAM( 1 ) ) );去一探PARAM展开后的样子。 一个很重要的补充:就像我在第一点说的那样,如果一个像函数的宏在使用时没有出现括号,那么预处理器只是 ...