How to use sed to replace only the first occurrence in a file?

前端 未结 23 1288
别跟我提以往
别跟我提以往 2020-11-22 04:27

I would like to update a large number of C++ source files with an extra include directive before any existing #includes. For this sort of task, I normally use a small bash s

23条回答
  •  甜味超标
    2020-11-22 04:42

    A possible solution here might be to tell the compiler to include the header without it being mentioned in the source files. IN GCC there are these options:

       -include file
           Process file as if "#include "file"" appeared as the first line of
           the primary source file.  However, the first directory searched for
           file is the preprocessor's working directory instead of the
           directory containing the main source file.  If not found there, it
           is searched for in the remainder of the "#include "..."" search
           chain as normal.
    
           If multiple -include options are given, the files are included in
           the order they appear on the command line.
    
       -imacros file
           Exactly like -include, except that any output produced by scanning
           file is thrown away.  Macros it defines remain defined.  This
           allows you to acquire all the macros from a header without also
           processing its declarations.
    
           All files specified by -imacros are processed before all files
           specified by -include.
    

    Microsoft's compiler has the /FI (forced include) option.

    This feature can be handy for some common header, like platform configuration. The Linux kernel's Makefile uses -include for this.

提交回复
热议问题