#pragma once和#ifndef

C语言中的头文件只是简单的复制粘贴。
C语言中变量、函数、结构体的定义和声明两个过程是分离的。声明一般放在头文件中,为了防止重复声明,须要保证头文件中的内容在构建obj文件时只被包含一次。这能够经过#ifndef宏定义和#pragma once两种方式实现。函数

#ifndef宏定义的方式:code

#ifndef SOME_UNIQUE_NAME_HERE
#define SOME_UNIQUE_NAME_HERE
 
// contents of the header
...
 
#endif // SOME_UNIQUE_NAME_HERE

#pragma once的方式编译器

#pragma once
 
// contents of the header
...

两种方式的优缺点:编译

  • #pragma once兼容性差,有些编译器并不支持这个宏命令。宏定义的方式能获得更普遍的支持。
  • 宏定义方式更加灵活,使得用户能够灵活控制某段代码是否编译。#pragma once的方式只能控制整个代码文件只编译一次。#pragma once的功能是宏定义功能的子集。
  • 宏定义须要定义一个宏名,这个宏名一旦冲突,错误十分隐蔽。
  • #pragma once语法更加简洁,可读性更好,而宏定义的方式须要写成三句话。
相关文章
相关标签/搜索