int main() { printf("sample rate = " STR2(SAMPLE_RATE) "\n"); return 0; } 运行输出 sample rate = 16000 1. 注意: 二级stringfication会将宏定义原样输出,即,如果16000加上括弧(有经验的程序员都懂),则STR2输出的也是带括弧的字符串,这通常不是你想要的 可以这样绕过: 给SAMPLE_RATE定义一个别...
在C语言的源程序中允许用一个标识符来表示一个字符串,此时该标识符被称为宏名,而该字符串被称为宏体。包含宏定义的程序在编译预处理的时候,预处理程字将会对程序中所有出现宏名的地方都用宏体去代替,该过程被称为宏替换。 在C语言中,宏分为带参数和不带参数两种。 不带参数的宏定义 //#define 宏名 字符...
#define UPCASE(c) (((c)>='a' && (c) <= 'z') ? ((c) – 0×20) : (c)) 13: 判断字符是不是10进值的数字 #define DECCHK(c) ((c)>='0' && (c)<='9') 14: 判断字符是不是16进值的数字 #define HEXCHK(c) (((c) >= '0' && (c)<='9') ((c)>='A' && (c)<...
C语言中有明确规定,宏定义是利用#define命令,用一个指定的标识代替一个字符串。对应到题目上就是#define 标识符 字符串,所以PI是标识符,3.1415926是字符串。所以这题选B 关于C选项,如果3.1415926不在宏函数定义中,那么它就是一个常量,只是因为它在#define命令中,所以它是一个字符串。A选项...
这是最简单的字符串宏常量,中间没有任何的转义字符或特殊字符。 #define PATH "E:\\c_study" 这是比较复杂的字符串宏常量,比如路径等,这里需要是双斜杠,否则会报如下错误: [Warning] unknown escape sequence: '\c' 即\需要配合转义字符使用。 例子代码如下: ...
类对象宏中不接收参数,只是根据宏定义做简单的字符串替换操作. C语言还有类函数宏(function-like macro),如下例: 类函数宏不仅进行简单的字符串替换,而且还要包含参数的替换. tips:宏的名称中不允许有空格,而且必须遵守C变量的命名规则:只能使用字符,数字和下划线( _ )字符,而且首字符不能是数字. ...
2.利用define来定义 字符串宏常量 除了定义宏常数之外,经常还用来定义字符串,尤其是路径: A),#define ENG_PATH_1 E:\English\listen_to_this\listen_to_this_3 B),#define ENG_PATH_2 “E:\English\listen_to_this\listen_to_this_3” 噢,到底哪一个正确呢?如果路径太长,一行写下来比较别扭怎么办?用...
使用#define定义字符串宏常量 宏定义也用于定义字符串,尤其是路径。例如:define ENG_PATH_1 E:\English\listen_to_this\listen_to_this_3 使用反斜杠接续符(\)连接路径部分。确保接续符反斜杠后不跟任何字符,以避免混淆。路径长时,使用反斜杠接续符确保代码清晰。使用#define定义注释符号 定义注释...
define定义的常量,预处理时只是直接进行了替换,,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。,因此在编译时它不对宏的定义进行检查,作用域不影响对常量的访问 。它的常量值只能是字符串或数字。 该命令有两种格式:一种是简单的常量宏定义, 另一种是带参数的宏定义...
不是字符串,C中字符串需要用双引号引起来。