1、macro
(1)#error msg指令使編譯器停止執行並打印一條語句,
(2)printf("%d,%s",_LINE_,_FILE_)打印當前行號和文件名
(3)#pragma arg設置了編譯器所使用的條件.
(4)#str將字符串放入被引號括起來的字符串中,如:
#define pr(s) puts(#s)
pr(hello world);->puts("hello world");
(5)將兩段文字拼接在一起,如:
#define call(verb,adj,do) verb##_##adj(do)
call(shrink, all, trees);->shrink_all(trees);
#define SIGNAL(x) "SIGNAL:" #x
SIGNAL(finishedParsing())
2、給結構賦初值
struct AAA
{
AAA():a(10){}
int a;
int b;
};
3、使用macro批定義變量
#define STR_EACH_DECLARE(macro)/
macro(age)/
macro(name)
#define STR_DECLARE(name) char name ## Str;
STR_EACH_DECLARE(STR_DECLARE)
void main()
{
int a=1;
nameStr='a';
ageStr='b';
}
4、定位參數
5、指針和常量
const type *
type const *
type * const
6、友元函數和友元類
7、拷貝構造函數和賦值語句
8、#pragma once
(1)#error msg指令使編譯器停止執行並打印一條語句,
(2)printf("%d,%s",_LINE_,_FILE_)打印當前行號和文件名
(3)#pragma arg設置了編譯器所使用的條件.
(4)#str將字符串放入被引號括起來的字符串中,如:
#define pr(s) puts(#s)
pr(hello world);->puts("hello world");
(5)將兩段文字拼接在一起,如:
#define call(verb,adj,do) verb##_##adj(do)
call(shrink, all, trees);->shrink_all(trees);
#define SIGNAL(x) "SIGNAL:" #x
SIGNAL(finishedParsing())
2、給結構賦初值
struct AAA
{
AAA():a(10){}
int a;
int b;
};
3、使用macro批定義變量
#define STR_EACH_DECLARE(macro)/
macro(age)/
macro(name)
#define STR_DECLARE(name) char name ## Str;
STR_EACH_DECLARE(STR_DECLARE)
void main()
{
int a=1;
nameStr='a';
ageStr='b';
}
4、定位參數
5、指針和常量
const type *
type const *
type * const
6、友元函數和友元類
7、拷貝構造函數和賦值語句
8、#pragma once
本文介绍C语言中的预处理宏使用技巧,包括错误消息生成、条件编译设置、字符串化、文本连接等高级用法,并展示了如何利用宏定义变量及结构初始化。此外还涉及指针与常量、友元函数、拷贝构造函数等概念。
611

被折叠的 条评论
为什么被折叠?



