在日常开发中出现以下几种情况会导致此类编译警告
第一种是头文件有函数的声明,但头文件没有被include
func.h
#ifndef __FUNC_H__
#define __FUNC_H__
int func_test(int a);
#endif
main.c
#include <stdio.h>
int main()
{
int ret;
ret = func_test(2);
printf("ret = %d\n", ret);
return 0;
}
第二种是头文件有被include,但头文件中没有函数的声明
func.h
#ifndef __FUNC_H__
#define __FUNC_H__
#endif
main.c
#include <stdio.h>
#include "func.h"
int main()
{
int ret;
ret = func_test(2);
printf("ret = %d\n", ret);
return 0;
}
第三种比较特殊,是在C和C++混合编译出现的
导致编译警告的头文件如下:
#ifndef __FUNC_H__
#define __FUNC_H__
#ifdef __cplusplus
extern "C"
{
int func_test(int a);
}
#endif
#endif
正确的头文件如下:
#ifndef __FUNC_H__
#define __FUNC_H__
#ifdef __cplusplus
extern "C"
{
#endif
int func_test(int a);
#ifdef __cplusplus
}
#endif
#endif
版权声明:本文为u012706603原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。