我正在修改一个c项目,这是我第一次尝试在我的项目中使用stdlib.h和string.h库。我正在研究MCUXpresso(基于eclipse的IDE)。这是我的代码:
#include <string.h>
#include <stdlib.h>
#include "config.h"
int number=100;
int n1,n2;
char test[5]="test";
char str[5];
extern void fntest(TTASKTABLE *ptrTaskTable)
{
itoa (number,str,10);
n1=strlen(test);
n2=atoi(test);
}
正如您所看到的,我已经包含了头文件,但编译器给出了错误:未定义引用'itoa';未定义引用'strlen';未定义引用'atoi' 在我的include文件夹中,已经存在(默认情况下在我的项目中)包含标准库的文件夹。 我看到函数在项目中的其他一些文件中使用...我无法理解为什么我会出现这个错误。 在原始代码中,函数是一个正文函数,我已经纠正了这一点。 你能帮帮我吗?
答案 0 :(得分:1)
我不知道您是否发布了实际代码,但是在此阶段已经上传了它不会编译。
#include <string.h>
#include <stdlib.h>
#include "config.h"
int number=100; // This is okay
int n1, n2; // This is okay
char test[5]="test"; // This is okay
char str[5]; // This is okay
itoa (number,str,10); // This is wrong
n1=strlen(test); // This is wrong
n2=atoi(test); // This is wrong
无论我附加评论// This is wrong
是什么,都是因为,这些需要在函数体中。
现在你已经说过了,
我看到这些函数在项目的其他一些文件中使用..
我没有为您提供实现itoa
功能的方法。
<强>更新强>
从现在开始,您已将其添加到函数中,我所谈论的内容是固定的。现在,理想情况下应该编译,只要在其中一个包含的头文件中有itoa
函数的有效定义。
答案 1 :(得分:0)
最后我解决了我的问题! Ijust必须更改链接器设置:project - &gt; properties - &gt; C / C ++ Build - &gt; settings - &gt; MCU Linker - &gt; general和change form没有启动或默认库不要使用标准启动文件,然后没有更多错误!