本文目录
- c语言,各位大佬问一下,有没有什么办法使得include函数找不到对应文件名的时候,输出null呢
- 这个Cannot open include file: ’stdafx.h’: No such file or directory错误怎么改(急求)
c语言,各位大佬问一下,有没有什么办法使得include函数找不到对应文件名的时候,输出null呢
我会在后面附上一种实现这种功能的办法,但是我想说这样做毫无意义,即使你可以通过一些手段编译成功,甚至达到输出NULL的目的,但是你的程序却很可能无法运行,或者运行时出错。
C语言作为一种静态编译型语言,在编译阶段或者预编译阶段发现错误要比运行时发现错误更有意义,所以现在的编译器才会越做越智能,帮你检查出程序潜在的问题,提示你修改,包括找不到include指定的文件,所有的这一切的目的只有一个,就是提早发现问题,使运行时的程序更加健壮、高效。
那么如何强行实现这种功能呢,最直接的方法当然是修改编译器,这对于大部分商业编译器来说是不可行的,因为你没有源码,但是像gcc这样的开源软件,还是可以尝试一下,不过难度较大,会改的人绝对不会做这种无意义的事。
我要说的另一种简单方式是自己写一个检测工具,功能很简单,就是分析每条include指令,然后检查文件是否存在,对于不存在的问题,将该条指令替换成一条输出null的语句,比如:
#include “
file1.h
” // 存在#include “
file2.h
” // 不存在// 文件内存
运行检测工具后:
#include “file1.h” // 存在
print(“null in file %s at line %d“,__FILE__,__LINE__);
// 文件内容
然后在编译前运行这个工具,对于没有使用到的include文件,该方法将达到输出null的目的,对于文件中使用到了include文件中的内容,比如变量、宏或者函数等,都会提示编译错误。
下面是在VC2017中设置自定义工具的办法,如下图:
打开项目属性-》自定义生成步骤-》配置相关参数。
这个Cannot open include file: ’stdafx.h’: No such file or directory错误怎么改(急求)
#include 《iostream》#include 《string》#include 《vector》#include 《algorithm》#include 《functional》//#include “stdafx.h“ 这个是VC编程中增加的一个用户自定义头文件,删掉得了。#include 《stdio.h》#include 《conio.h》 //这个是TC的一个头文件#include “ApiEx.h“估计你是复制的别人的代码,你编译会碰到很多问题,最好自己多研究一下