include custom head file

简介:
前面已经看到GCC编译时分成4个步骤,第一步是预处理, 其中就包含了include 头文件.
C通过头文件可以调用其他c文件中的函数, 如果要共享变量, 变量定义时需使用extern .

举个例子 : 
封装函数 : 
[root@db-172-16-3-150 zzz]# cat encrypt.c
void encrypt(char *msg) {
  while (* msg) {
    *msg = *msg ^ 31;
    msg++;
  }
}

封装函数的头文件 : 
[root@db-172-16-3-150 zzz]# cat encrypt.h
void encrypt(char * msg);


主函数 : 
[root@db-172-16-3-150 zzz]# cat a.c
#include <stdio.h>  //头文件放在/usr/include 或/usr/local/include 中或者编译时使用-I的目录中使用尖括号.
#include "encrypt.h"  //头文件如果放在本地目录或相对目录或绝对目录时可使用双引号

int main() {
  char msg[80];
  while(fgets(msg,80,stdin)) {
    printf("original msg:%s\n", msg);
    // encode
    encrypt(msg);
    printf("encoded msg:%s\n", msg);
    // decode
    encrypt(msg);
    printf("decoded msg:%s\n", msg);
  }
  return 0;
}

编译时需要指出所有用到的C文件( 这里是 a.c 和 encrypt.c ).
gcc -O3 -Wall -Wextra -Werror -g ./a.c ./encrypt.c -o a
改为尖括号的话编译命令要改一下, 添加-I 或者 把这个头文件拷贝到/usr/include里面才可以正常编译.

[root@db-172-16-3-150 zzz]# gcc -O3 -Wall -Wextra -Werror -g ./a.c ./encrypt.c -o a && ./a
./a.c:2:21: error: encrypt.h: No such file or directory
cc1: warnings being treated as errors
./a.c: In function ‘main’:
./a.c:9: warning: implicit declaration of function ‘encrypt’

把encrypt.h 拷贝到/usr/include中正常编译.
[root@db-172-16-3-150 zzz]# cp encrypt.h /usr/include/
[root@db-172-16-3-150 zzz]# gcc -O3 -Wall -Wextra -Werror -g ./a.c ./encrypt.c -o a

假设encrypt.h头文件在/root/zzz里面, 添加-I/root/zzz 正常编译.
[root@db-172-16-3-150 zzz]# gcc -O3 -Wall -Wextra -Werror -g -I/root/zzz ./a.c ./encrypt.c -o a

目录
相关文章
|
5月前
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
763 0
|
8月前
|
IDE 开发工具 Android开发
Couldn‘t get post build model. Module:UpdateService_0804.main Variant: debugOpen logcat panel fo
Couldn‘t get post build model. Module:UpdateService_0804.main Variant: debugOpen logcat panel fo
95 0
|
数据安全/隐私保护
fatal error: boost/algorithm/string.hpp: 没有那个文件或目录
fatal error: boost/algorithm/string.hpp: 没有那个文件或目录
完美解决common_define.h: No such file or directory
完美解决common_define.h: No such file or directory
242 0
完美解决common_define.h: No such file or directory
error: Two output files share the same path but have different contents: node_modules\.vite\..xxx.js
error: Two output files share the same path but have different contents: node_modules\.vite\..xxx.js
761 0
error: Two output files share the same path but have different contents: node_modules\.vite\..xxx.js
|
PyTorch 算法框架/工具
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=405 error=11 : invalid argument
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=405 error=11 : invalid argument
233 0
THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=405 error=11 : invalid argument
|
Python
ConfigParser.MissingSectionHeaderError: File contains no section headers.
今天使用ConfigParser解析一个ini文件,报出如下错误: config.read(logFile) File "C:\Python26\lib\ConfigParser.py", line 286, in read self.
5724 0
|
iOS开发 开发者 存储
对Link Map File的初步认识
Link Map File中文直译为链接映射文件,它是在Xcode生成可执行文件的同时生成的链接信息文件,用于描述可执行文件的构造部分,包括了代码段和数据段的分布情况
6872 0

热门文章

最新文章