Knowledge

Include directive

Source 📝

711:, but this is not required.) Some compilers, to prevent unlimited recursion, limit invoking an include file to a certain number, prohibit invoking itself or any currently open file, or are limited to a maximum of one include file at a time, e.g. an include file cannot include itself or another file. However, the program that includes other files can include several, just one at a time. 430:
or other build file), while the form with quotes does not search in a standard system directory, only searching in local or project-specific paths. In case there is no clash, the angle-brackets form can also be used to specify project-specific includes, but this is considered poor form. The fact that
614:
statement within other regions of code. For modules, header-type interface information is automatically generated by the compiler and typically put into separate module files, although some compilers have placed this information directly into object files. The language specification itself does not
288:
One drawback of this approach is that the function prototype must be present in all files that use the function. Another drawback is that if the return type or arguments of the function are changed, all of these prototypes would need to be updated. Putting the prototype in a single, separate file
609:
statements and modules. The former can be used to share a common file containing procedure interfaces, much like a C header, although the specification of an interface is not required for all varieties of Fortran procedures. This approach is not commonly used; instead, procedures are generally
468:
In C and C++, problems may be faced if two (or more) include files contain the same third file. One solution is to avoid include files from including any other files, possibly requiring the programmer to manually add extra include directives to the original file. Another solution is to use
402:
to replace that line with the entire text of the contents of the named source file (if included in quotes: "") or named header (if included in angle brackets: <>); a header doesn't need to be a source file. Inclusion continues recursively on these included contents, up to an
411:. A "source file" can be any file, with a name of any form, but is most commonly named with a ".h" extension and called a "header file" (sometimes ".hpp" or ".hh" to distinguish C++ headers), though files with .c, .cc, and .cpp extensions may also be included (particularly in the 117:. Programmers who wish to declare standardized identifiers in more than one source file can place such identifiers in a single header file, which other code can then include whenever the header contents are required. This is to keep the interface in the header separate from the 574:) allows programmers to copy copybooks into the source of the program in a similar way to header files, but it also allows for the replacement of certain text in them with other text. The COBOL keyword for inclusion is 431:
headers need not correspond to files is primarily an implementation technicality, and is used to omit the .h extension in including C++ standard headers; in common use, "header" means "header file".
426:
in a standard system directory (or set of directories), and then searches for source files in local or project-specific paths (specified on the command line, in an environment variable, or in a
422:
directive can determine which header or source file to include in an implementation-defined way. In practice, what is usually done is that the angle-brackets form searches for
403:
implementation-defined nesting limit. Headers need not have names corresponding to files: in C++ standard headers are typically identified with words, like "vector", hence
1294: 743:, which prevent a file from being included or required again if it has already been included or required, avoiding the C's double inclusion problem. 191:
An example situation which benefits from the use of an include directive is when referring to functions in a different file. Suppose there is some
1178: 74: 1324: 615:
mandate the creation of any extra files, even though module procedure interfaces are almost universally propagated in this manner.
1185: 56:, that causes the contents of the specified file to be inserted into the original file. These included files are called 1088: 1329: 1066:
C11 standard, 7.1.2 Standard headers, p. 181, footnote 182: "A header is not necessarily a source file, nor are the
1314: 928: 912: 884: 173:
ensure that everyone uses the same version of a data layout definition or procedural code throughout a program,
140: 1010: 851: 704:
is the name of the file to be included. (It has been common practice to name Pascal's include files with the
624: 999: 1299: 916: 874: 783: 136: 110: 17: 1189: 1164: 1147: 894: 69:. They are often used to define the physical layout of program data, pieces of procedural code, and/or 1016: 763: 582:
clause. An include directive has been present in COBOL since COBOL 60, but changed from the original
484:, that is, separate translation units synthesized from a header. They are meant to be used alongside 454:// Include the contents of the standard header 'vector' (probably a file 'vector.h'). 445:// Include the contents of the standard header 'stdio.h' (probably a file 'stdio.h'). 407:, while in C standard headers have identifiers in the form of filenames with a ".h" extension, as in 118: 904: 381: 199:, which is referred to in a second file by first declaring its external existence and type (with a 192: 102: 412: 395: 35: 129: 931:) do not use forward declarations and, instead, identifiers are recognized automatically from 1319: 1295:
Organizing Code Files (the potential pitfalls and guidelines for using header files in C++)
773: 86: 31: 8: 1004: 972: 920: 485: 166: 98: 70: 962: 705: 200: 125: 1265: 1221: 1215: 727:
directive causes another PHP file to be included and evaluated. Similar commands are
1239: 1084: 817: 693: 936: 732: 148: 143:) do not use forward declarations; identifiers are recognized automatically from 867:(RPG IV – first argument is the filename, second argument is the copybook) 1334: 392: 93:
is a file that allows programmers to separate certain elements of a program's
1308: 470: 1124: 1095: 994: 831: 643:
directive immediately follows the start of a comment block in the form of
1037: 987: 982: 977: 932: 827: 144: 94: 1074:
delimited sequences in header names necessarily valid source file names.
363:
Now, every time the code is compiled, the latest function prototypes in
967: 797: 793: 114: 106: 1179:"COBOL Initial Specifications for a COmmon Business Oriented Language" 179:
easily change programs when needed (only one file must be edited), and
924: 367:
will be included in the files using them, avoiding potential errors.
559:
Header units are provided for all the C++ standard library headers.
1120: 807: 427: 399: 759: 598: 477: 289:
avoids these issues. Assuming the prototype is moved to the file
1225: 132:
traditionally declare their standard functions in header files.
571: 567: 463:// Include the contents of the file 'user_defined.h'. 385: 176:
easily cross-reference where components are used in a system,
841: 605:. However, Fortran 90 and later have two related features: 956: 720: 751:
There are many forms of the include directive, such as:
610:
grouped into modules that can then be referenced with a
1057:
C11 standard, 6.10.2 Source file inclusion, pp. 164–165
415:
technique), and sometimes other extensions are used.
97:
into reusable files. Header files commonly contain
1165:"P1502R1 - Standard library header units for C++20" 927:control. Some of these languages (such as Java and 947:directives), meaning header files are not needed. 919:) tend to avoid copybooks or includes, preferring 151:symbols. This means header files are not needed. 1306: 1038:"Separating Interface and Implementation in C++" 731:, which upon failure to include will produce a 1035: 542:// supporting this is mandated by the standard 1188:. April 1960. p. IX-9. Archived from 293:, the second source file can then become: 1217:CODASYL COBOL Journal of Development 1968 1083: 169:of code to be developed which help to: 135:Some newer compiled languages (such as 14: 1307: 1119: 578:, and replacement is done using the 27:Type of file in computer programming 939:symbols (typically referenced with 488:. The syntax used in that case is 370: 24: 746: 480:, headers can also be imported as 195:source file containing a function 182:save time by reusing data layouts. 25: 1346: 1288: 957:Application programming interface 635:compiler directive, in which the 1325:C (programming language) headers 34:and other computer files have a 1300:C++ header file inclusion rules 1258: 1232: 80: 77:and the reuse of code or data. 1207: 1171: 1157: 1140: 1113: 1077: 1060: 1051: 1029: 923:and import/export systems for 601:does not require header files 524:// supporting this is optional 13: 1: 1022: 1011:Interface Definition Language 814:<%@ include ... %> 1000:File inclusion vulnerability 7: 1148:"Merging Modules - P1103R3" 950: 388:programming languages, the 10: 1351: 891:local ... = require("...") 770:<!--#include ... --> 593: 551:"user_defined.h" 460:"user_defined.h" 186: 154: 1126:Notes on programming in C 1017:Class implementation file 735:and halt the script, and 618: 1330:C (programming language) 1129:, Cat-v document archive 804:var ... = require("...") 562: 500: 436: 409:#include <stdio.h> 375: 295: 205: 1036:Alan Griffiths (2005). 935:and read directly from 911:Modern languages (e.g. 413:single compilation unit 405:#include <vector> 147:and read directly from 1315:Programming constructs 1214:"The COPY Statement". 714: 627:compilers support the 1186:Department of Defense 32:programming languages 1089:"The C Preprocessor" 1085:Stallman, Richard M. 580:REPLACING ... BY ... 495:import header-name; 130:C++ standard library 99:forward declarations 87:computer programming 71:forward declarations 1195:on 12 February 2014 1101:on 4 September 2012 1005:One Definition Rule 973:Modular programming 790:import ... from ... 418:These two forms of 963:Precompiled header 201:function prototype 126:C standard library 806:(JavaScript with 692:directive is not 301:"add.h" 165:directive allows 16:(Redirected from 1342: 1282: 1281: 1279: 1277: 1262: 1256: 1255: 1253: 1251: 1236: 1230: 1229: 1211: 1205: 1204: 1202: 1200: 1194: 1183: 1175: 1169: 1168: 1161: 1155: 1154: 1152: 1144: 1138: 1137: 1136: 1134: 1117: 1111: 1110: 1108: 1106: 1100: 1094:. Archived from 1093: 1081: 1075: 1073: 1069: 1064: 1058: 1055: 1049: 1048: 1046: 1045: 1033: 946: 942: 902: 892: 882: 872: 866: 849: 839: 825: 815: 805: 791: 781: 771: 757: 742: 738: 730: 726: 691: 687: 680: 671: 662: 653: 642: 638: 634: 630: 613: 608: 589: 585: 581: 577: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 519: 516: 513: 510: 507: 504: 464: 461: 458: 455: 452: 449: 446: 443: 440: 421: 410: 406: 391: 371:Language support 366: 359: 356: 353: 350: 347: 344: 341: 338: 335: 332: 329: 326: 323: 320: 317: 314: 311: 308: 305: 302: 299: 292: 284: 281: 278: 275: 272: 269: 266: 263: 260: 257: 254: 251: 248: 245: 242: 239: 236: 233: 230: 227: 224: 221: 218: 215: 212: 209: 198: 163: 73:while promoting 62: 61: 54: 48: 42: 21: 1350: 1349: 1345: 1344: 1343: 1341: 1340: 1339: 1305: 1304: 1291: 1286: 1285: 1275: 1273: 1272:. The PHP Group 1264: 1263: 1259: 1249: 1247: 1246:. The PHP Group 1238: 1237: 1233: 1213: 1212: 1208: 1198: 1196: 1192: 1181: 1177: 1176: 1172: 1163: 1162: 1158: 1150: 1146: 1145: 1141: 1132: 1130: 1123:(21 Feb 1989), 1118: 1114: 1104: 1102: 1098: 1091: 1082: 1078: 1071: 1067: 1065: 1061: 1056: 1052: 1043: 1041: 1034: 1030: 1025: 953: 944: 940: 937:dynamic library 900: 890: 880: 870: 857: 847: 837: 823: 813: 803: 789: 779: 769: 755: 749: 747:Other languages 740: 736: 733:fatal exception 728: 724: 717: 689: 685: 674: 665: 656: 647: 640: 636: 632: 628: 621: 611: 606: 596: 587: 583: 579: 575: 565: 557: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 496: 494: 466: 465: 462: 459: 456: 453: 450: 447: 444: 442:<stdio.h> 441: 438: 419: 408: 404: 389: 378: 373: 364: 361: 360: 357: 354: 351: 348: 345: 342: 339: 336: 333: 330: 327: 324: 321: 318: 315: 312: 309: 306: 303: 300: 297: 290: 286: 285: 282: 279: 276: 273: 270: 267: 264: 261: 258: 255: 252: 249: 246: 243: 240: 237: 234: 231: 228: 225: 222: 219: 216: 213: 210: 207: 196: 189: 161: 157: 149:dynamic library 83: 59: 58: 52: 46: 40: 38:, often called 28: 23: 22: 15: 12: 11: 5: 1348: 1338: 1337: 1332: 1327: 1322: 1317: 1303: 1302: 1297: 1290: 1289:External links 1287: 1284: 1283: 1257: 1231: 1206: 1170: 1156: 1139: 1112: 1076: 1059: 1050: 1027: 1026: 1024: 1021: 1020: 1019: 1014: 1008: 1002: 997: 992: 990: 985: 980: 975: 970: 965: 960: 952: 949: 909: 908: 898: 888: 878: 868: 855: 845: 835: 821: 811: 801: 787: 777: 767: 748: 745: 716: 713: 694:case sensitive 682: 681: 672: 663: 654: 620: 617: 595: 592: 564: 561: 501: 492: 490: 471:include guards 451:<vector> 437: 377: 374: 372: 369: 296: 206: 203:) as follows: 188: 185: 184: 183: 180: 177: 174: 156: 153: 119:implementation 82: 79: 26: 9: 6: 4: 3: 2: 1347: 1336: 1333: 1331: 1328: 1326: 1323: 1321: 1318: 1316: 1313: 1312: 1310: 1301: 1298: 1296: 1293: 1292: 1271: 1267: 1261: 1245: 1241: 1235: 1227: 1223: 1220:. July 1969. 1219: 1218: 1210: 1191: 1187: 1180: 1174: 1166: 1160: 1149: 1143: 1128: 1127: 1122: 1116: 1097: 1090: 1087:(July 1992). 1086: 1080: 1063: 1054: 1039: 1032: 1028: 1018: 1015: 1012: 1009: 1006: 1003: 1001: 998: 996: 993: 991: 989: 986: 984: 981: 979: 976: 974: 971: 969: 966: 964: 961: 958: 955: 954: 948: 938: 934: 930: 926: 922: 918: 914: 906: 899: 896: 889: 886: 879: 876: 869: 865: 861: 856: 853: 846: 843: 836: 833: 829: 822: 819: 812: 809: 802: 799: 795: 788: 785: 778: 775: 768: 765: 761: 754: 753: 752: 744: 734: 722: 712: 710: 707: 703: 699: 695: 678: 673: 669: 664: 660: 655: 651: 646: 645: 644: 626: 616: 604: 600: 591: 573: 569: 560: 499: 498:For example: 489: 487: 483: 479: 474: 472: 435: 434:For example: 432: 429: 425: 416: 414: 401: 397: 394: 387: 383: 368: 294: 204: 202: 194: 181: 178: 175: 172: 171: 170: 168: 164: 152: 150: 146: 142: 138: 133: 131: 127: 122: 120: 116: 112: 108: 104: 100: 96: 92: 88: 78: 76: 75:encapsulation 72: 68: 64: 55: 49: 43: 37: 33: 19: 1274:. Retrieved 1269: 1260: 1248:. Retrieved 1243: 1234: 1216: 1209: 1197:. Retrieved 1190:the original 1173: 1159: 1142: 1131:, retrieved 1125: 1115: 1103:. Retrieved 1096:the original 1079: 1062: 1053: 1042:. Retrieved 1031: 995:Transclusion 978:#pragma once 933:source files 910: 863: 859: 838:%include ... 832:Turbo Pascal 750: 741:require_once 737:include_once 718: 708: 702:filename.inc 701: 698:filename.pas 697: 683: 677:filename.pas 676: 668:filename.inc 667: 659:filename.inc 658: 650:filename.pas 649: 622: 602: 597: 566: 558: 497: 482:header units 481: 475: 467: 433: 424:source files 423: 417: 393:preprocessor 379: 362: 287: 190: 160: 158: 145:source files 134: 123: 113:, and other 90: 84: 81:Header files 66: 57: 51: 45: 39: 29: 1320:Source code 1276:20 February 1250:20 February 1199:11 February 1105:19 February 988:Unity build 983:Header-only 901:import ...; 828:UCSD Pascal 780:import ...; 756:include ... 666:{$ include 398:causes the 115:identifiers 107:subroutines 95:source code 91:header file 60:header file 18:Header file 1309:Categories 1044:2013-05-07 1023:References 968:Subroutine 881:using ...; 848:import ... 798:ECMAScript 794:JavaScript 684:Where the 675:(*INCLUDE 570:(and also 1266:"require" 1240:"include" 1121:Pike, Rob 925:namespace 860:QCPYLESRC 824:{$ I ...} 706:extension 690:$ include 641:$ include 633:$ include 590:by 1968. 396:directive 167:libraries 111:variables 67:copybooks 36:directive 1226:73601243 951:See also 871:use ...; 808:CommonJS 493:optional 457:#include 448:#include 439:#include 428:Makefile 420:#include 400:compiler 390:#include 298:#include 128:and the 1270:php.net 1244:php.net 921:modules 913:Haskell 760:Fortran 729:require 725:include 607:include 599:Fortran 594:Fortran 584:INCLUDE 486:modules 380:In the 187:Example 162:include 155:Purpose 103:classes 41:include 1224:  1040:. ACCU 941:import 858:/COPY 852:Python 796:as in 772:(HTML 723:, the 696:, and 657:(*$ I 625:Pascal 619:Pascal 603:per se 572:RPG IV 548:import 545:export 533:vector 527:import 503:import 491:export 476:Since 325:return 307:triple 250:return 232:triple 47:import 1193:(PDF) 1182:(PDF) 1151:(PDF) 1133:9 Dec 1099:(PDF) 1092:(PDF) 1013:(IDL) 1007:(ODR) 959:(API) 945:using 648:{$ i 623:Most 568:COBOL 563:COBOL 509:stdio 478:C++20 376:C/C++ 365:add.h 291:add.h 50:, or 30:Many 1278:2014 1252:2014 1222:LCCN 1201:2014 1135:2011 1107:2014 1072:> 1070:and 1068:< 917:Java 915:and 875:Rust 842:PL/I 784:Java 764:MASM 739:and 709:.inc 588:COPY 576:COPY 536:> 530:< 518:> 506:< 384:and 159:The 139:and 137:Java 124:The 89:, a 53:copy 1335:C++ 943:or 895:Lua 864:QBC 818:JSP 774:SSI 721:PHP 719:In 715:PHP 700:or 688:or 686:$ i 639:or 637:$ i 631:or 629:$ i 612:use 586:to 386:C++ 355:)); 340:add 328:add 313:int 304:int 280:)); 265:add 253:add 238:int 229:int 223:int 217:int 211:add 208:int 197:add 121:. 101:of 85:In 65:or 1311:: 1268:. 1242:. 1184:. 929:C# 885:C# 830:, 762:, 679:*) 661:*) 473:. 226:); 141:C# 109:, 105:, 44:, 1280:. 1254:. 1228:. 1203:. 1167:. 1153:. 1109:. 1047:. 907:) 905:D 903:( 897:) 893:( 887:) 883:( 877:) 873:( 862:, 854:) 850:( 844:) 840:( 834:) 826:( 820:) 816:( 810:) 800:) 792:( 786:) 782:( 776:) 766:) 758:( 670:} 652:} 554:; 539:; 521:; 515:h 512:. 382:C 358:} 352:x 349:, 346:x 343:( 337:, 334:x 331:( 322:{ 319:) 316:x 310:( 283:} 277:x 274:, 271:x 268:( 262:, 259:x 256:( 247:{ 244:) 241:x 235:( 220:, 214:( 193:C 63:s 20:)

Index

Header file
programming languages
directive
forward declarations
encapsulation
computer programming
source code
forward declarations
classes
subroutines
variables
identifiers
implementation
C standard library
C++ standard library
Java
C#
source files
dynamic library
libraries
C
function prototype
C
C++
preprocessor
directive
compiler
single compilation unit
Makefile
include guards

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.