导航:首页 > 源码编译 > 函数重定义编译失败

函数重定义编译失败

发布时间:2025-07-24 10:53:05

❶ keil AC6移植freeRTOS解决(100+)报错问题

在使用keil移植freeRTOS时,需注意ac5与ac6编译器差异导致移植port文件.c和.h时可能出现报错问题。移植过程遵循以下步骤:

首先,下载freeRTOS源码,网络上教程丰富。

其次,在hal库或校准库下建立文件,接着移植源码,注意删除无用内容。

然后,将移植的.c和.h文件在keil中关联起来,编译过程中会显示未使用功能的报错信息,需针对具体错误注释或删除相关代码。

特别注意,在port.c文件中包含头文件(如f407示例),之后编译时若发现函数重定义错误,应根据报错内容注释到相应的函数。

对于stm32f4xx_it.c文件,确保注释或删除PendSV_Handler、SysTick_Handler和SVC_Handler,避免此类函数的未定义导致的报错。

解决报错的关键在于定义freeRTOS中未使用的钩子函数(vApplicationStackOverflowHook、vApplicationIdleHook、vApplicationTickHook 和 vApplicationMallocFailedHook),即使不实际使用,也需提供空定义以确保编译通过。

具体实现方式是将空定义添加到项目源文件中,例如main.c文件。正确操作后,所有报错解决,移植freeRTOS至keil AC6过程完成。

❷ C++中static、inline、weak symbol和Unused warnning

C++中static、inline、weak symbol和Unused warning详解1. static

static关键字在C++中有多种用途,其中两种最常见的用法是:

本地作用域:当static修饰函数或变量时,它们的作用域被限制在定义它们的文件内,即它们不能与其他文件进行链接。这意味着,无论在头文件还是cpp文件中使用static修饰的函数或变量,都必须在相应的文件中被使用,否则编译器会报Unused warning

2. 匿名的namespace

匿名的namespace实际上和static拥有相同的本地作用域效果。在本地作用域内未被使用的函数或变量同样会报Unused warning

static和匿名的namespace可以看出,所有局部(本地)作用域内的函数或变量都必须被使用,否则就会报Unused warning

3. inline

inline关键字的行为在不同编译器中可能有所不同,以下以GCC为例进行说明:

这解释了为什么将inline函数定义在头文件中不会报重定义错误:链接的规则是,如果有多个强符号会出现重定义错误;但如果有多个weak符号,则会选择空间最大的一个。因此,在多个cpp文件包含同一个inline函数定义后,最多也只是形成多个weak符号,不会导致重定义错误。

4. static inline

static inline修饰的函数既具有inline的效果,也具有static的效果:

因此,在头文件中定义并实现多个函数时,使用static inline修饰可以避免Unused warning和重定义错误。

5. weak symbol

weak symbol(弱符号)在链接时具有特殊的作用,常见的产生弱符号的方式包括:

弱符号的作用:在链接时,如果有多个弱符号和一个强符号,强符号会覆盖弱符号。这种机制常用于实现函数覆盖或提供默认实现,允许用户在需要时提供自己的实现而无需修改原始代码。

总结

了解这些概念和行为对于编写高质量、无警告的C++代码至关重要。

❸ 关于C语言在编译时常出现的错误有哪些

1、fatal error C1010: unexpected end of file while looking for precompiled header directive。

寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")

2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory

不能打开包含文件“R…….h”:没有这样的文件或目录。

3、error C2011: 'C……': 'class' type redefinition

类“C……”重定义。

4、error C2018: unknown character '0xa3'

不认识的字符'0xa3'。(一般是汉字或中文标点符号)

5、error C2057: expected constant expression

希望是常量表达式。(一般出现在switch语句的case分支中)

6、error C2065: 'IDD_MYDIALOG' : undeclared identifier

“IDD_MYDIALOG”:未声明过的标识符。

7、error C2082: redefinition of formal parameter 'bReset'

函数参数“bReset”在函数体中重定义。

8、error C2143: syntax error: missing ':' before '{'

句法错误:“{”前缺少“;”。

9、error C2146: syntax error : missing ';' before identifier 'dc'

句法错误:在“dc”前丢了“;”。

10、error C2196: case value '69' already used

值69已经用过。(一般出现在switch语句的case分支中)

11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'

成员函数“OnTimer”没有在“CHelloView”中声明。

12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'

重载的函数“void reset(int)”在类“B”中找不到。

13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention

类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。

14、error C2660: 'SetTimer' : function does not take 2 parameters

“SetTimer”函数不传递2个参数。

15、warning C4035: 'f……': no return value

“f……”的return语句没有返回值。

16、warning C4553: '= =' : operator has no effect; did you intend '='?

没有效果的运算符“= =”;是否改为“=”?

17、warning C4700: local variable 'bReset' used without having been initialized

局部变量“bReset”没有初始化就使用。

18、error C4716: 'CMyApp::InitInstance' : must return a value

“CMyApp::InitInstance”函数必须返回一个值。

19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing

连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)

20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"

连接时发现没有实现的外部符号(变量、函数等)。

function call missing argument list 调用函数的时候没有给参数。

member function definition looks like a ctor, but name does not match enclosing class 成员函数声明了但没有使用

unexpected end of file while looking for precompiled header directive 在寻找预编译头文件时文件意外结束,编译不正常终止可能造成这种情况

❹ c语言 头文件中放函数实体 两个c文件同时引用会报错:找到一个或多个重定义的符号

C语言头文件中一般只进行函数声明,函数实现一般另写在文件中,这样引用头文件就不会报重复定义了。
你的两个c文件在一个工程中,同时引用你定义的那种,在编译时,两个c文件都会将这段代码(头文件中的)展开到你的c文件中,因此,会报重复定义

阅读全文

与函数重定义编译失败相关的资料

热点内容
花果山服务器什么时候开 浏览:628
水平杆加密规范要求 浏览:72
手机版二级python选择题 浏览:688
服务器为什么有的没有dns 浏览:709
服务器ip地址怎么填 浏览:397
简单的分圆方计算法 浏览:250
java获取类的名称 浏览:116
让函数中途停止python 浏览:640
语玩app旧版本哪里下载 浏览:50
程序员写代码的四种境界 浏览:731
文明重启为什么会服务器修复 浏览:377
证券公司乌龙程序员 浏览:453
庐山程序员 浏览:916
金立s9加密通话 浏览:455
中考公交加密班次 浏览:307
电脑文件夹加压怎么解压 浏览:408
美女要解压是解药 浏览:177
浙江移动华为服务器云服务器 浏览:128
剪视频用什么app最好免费 浏览:417
高德淘金的app在哪里下载 浏览:965