在include指令中使用尖括号和引号有什么区别?
#包括<文件名>#包括“文件名”
在include指令中使用尖括号和引号有什么区别?
#包括<文件名>#包括“文件名”
当前回答
#include<>用于预定义的头文件
如果头文件是预定义的,那么您只需将头文件名写在尖括号中,它看起来像这样(假设我们有一个预定义的头文件名iostream):
#include <iostream>
#include“”表示程序员定义的头文件
如果你(程序员)编写了自己的头文件,那么你会将头文件名用引号括起来。因此,假设您编写了一个名为myfile.h的头文件,那么这是如何使用include指令包含该文件的示例:
#include "myfile.h"
其他回答
“”将搜索。/第一然后搜索默认包含路径。您可以使用以下命令打印默认包含路径:
gcc -v -o a a.c
以下是一些例子,让事情更清楚:代码交流工作
// a.c
#include "stdio.h"
int main() {
int a = 3;
printf("a = %d\n", a);
return 0;
}
b.c的代码也有效
// b.c
#include <stdio.h>
int main() {
int a = 3;
printf("a = %d\n", a);
return 0;
}
但当我在当前目录中创建名为stdio.h的新文件时
// stdio.h
inline int foo()
{
return 10;
}
a.c将生成编译错误,但b.c仍然有效
和“”,<>可以与相同的文件名一起使用。因为搜索路径优先级不同。所以直流电也起作用
// d.c
#include <stdio.h>
#include "stdio.h"
int main()
{
int a = 0;
a = foo();
printf("a=%d\n", a);
return 0;
}
不同的是预处理器搜索要包含的文件的位置。
#include<filename>预处理器以实现定义的方式进行搜索,通常在编译器/IDE预先指定的目录中进行搜索。此方法通常用于包含C标准库的头文件和与目标平台相关联的其他头文件。#include“filename”预处理器也以实现定义的方式进行搜索,但通常用于包括程序员定义的头文件,并且通常包括与包含指令的文件相同的目录(除非给出了绝对路径)。
对于GCC,可以在GCC文档中找到关于搜索路径的更完整描述。
在引用系统文件时使用#include<filename>。这是一个头文件,可以在系统默认位置(如/usr/include或/usr/local/include)找到。对于需要包含在其他程序中的自己的文件,必须使用#include“filename”语法。
#include <abc.h>
用于包含标准库文件。因此编译器将检查标准库头所在的位置。
#include "xyz.h"
将告诉编译器包含用户定义的头文件。因此编译器将在当前文件夹或-I定义的文件夹中检查这些头文件。
#include <file>
包含默认包含目录所在的文件。
#include "file"
在编译文件的当前目录中包含文件。双引号还可以指定到其他位置的完整文件路径。