函数“strlen”无法解析 - Eclipse cpp

Posted

技术标签:

【中文标题】函数“strlen”无法解析 - Eclipse cpp【英文标题】:Function 'strlen' could not be resolved - Eclipse cpp 【发布时间】:2016-05-29 11:14:47 【问题描述】:

我是 Ecplipse 的 cpp 新手,我遇到了很多问题。

已修复:1) 开始时默认没有包含文件夹。

未打包 Eclipse 的 zip,但它没有库(或包含),所以我使用包含文件夹的 DEV 设置“路径和符号”(安装了 MinGW 并包含它们)。 这样做,我解决了包含问题。

未修复:2) “无法解析函数‘strlen’”

未修复 3) “在 PATH 中找不到程序“g++”(也是 gcc)” 我使用以下 bin 设置了 PATH:dev、mingw 和 mingw/msys 文件夹......但没有用

#include <iostream>
#include <stdlib.h>
#include "D:\Documenti\funz.cpp"
#include "D:\Documenti\winfunz.cpp"
using namespace std;

typedef char Elem;
struct Node
    int id;
    Elem * val;
    Node* prev;
    Node* next;
;
typedef Node* List;

class Fifo

List l;

public:
    Fifo()
    l=NULL[enter image description here][1]; 
    
    void insert(List &l, Elem *val, int id)

        Node *n;
        int riemp=strlen(val);
        n=new Node;
        n->val=new char[riemp+1];
        n->id=id;
        strcpy(n->val, val); // equivale a (*n).val=val;

        n->next=NULL;//a prescindere è NULL
        if (l==NULL)//se è il primo elemento
            n->prev=NULL;
            l=n;
        
        else
            if (l->next==NULL)//se è il secondo elemento
                l->next=n;
                l->prev=n;
                n->prev=l->prev;
            
            else 
                (l->prev)->next=n;
                n->prev=l->prev;
                l->prev=n;
            
    

    Node* search(List l, int id)

        while (l!=NULL && l->id!=id)
            l=l->next;
        return l;
    

    void delete_node(List & l, Node* n)
        short int deltype=0;
        if (n->next==NULL && n->prev!=l) deltype=1;//se è l'ultimo elemento
        if (n->next==NULL && n->prev==l) deltype=2;//se è il secondo elemento
        if (n->next==NULL && n==l) deltype=3;//se l'unico elemento
        if (n->next!=NULL && n==l) deltype=4;//se solo il primo elemento vine eliminato

        switch (deltype)

        case 1:
            l->prev=n->prev;
            (n->prev)->next=NULL;
            break;

        case 2:
            l->prev=NULL;
            l->next=NULL;
            break;

        case 3:
            l=NULL;
            break;

        case 4:
            if (l->prev==l->next)//se sono solo gli ultimi due e il boss viene eliminato
            (l->next)->prev=NULL;
            else
                (l->next)->prev=l->prev;
            l=l->next;
            break;

        default://se è un elemento non primo e non ultimo && la lista ha elementi>2
            (n->prev)->next=n->next;
            (n->next)->prev=n->prev;
        
        delete[] n->val;
        delete n;
    
    void print(List l)
        if (l==NULL) cout<<"\nLista vuota\n";
        int tmp;
        char num[3+1] ;
        while (l!=NULL)
            tmp=l->id;
            if(tmp<10) strcpy(num, strcat("00", MioNS::conv_num_numchar(tmp)));
            else if(tmp<100) strcpy(num, strcat("0", MioNS::conv_num_numchar(tmp)));
            else strcpy(num, MioNS::conv_num_numchar(tmp));
            cout<<num<<":"<<l->val<<endl;
            l=l->next;
        
        cout<<'\n';
    

    void init_list(List & l)
        l=NULL;
    
    void delete_list(List & l)
        Node* n;
        while (l!=NULL)
            n=l;
            l=l->next;
            delete[] n->val;
            delete n;
                       

    void printfile(List l , ofstream& out)
        int tmp;
        char num[3+1] ;
        while (l!=NULL)
            tmp=l->id;
            if(tmp<10) strcpy(num, strcat("00", MioNS::conv_num_numchar(tmp)));
            else if(tmp<100) strcpy(num, strcat("0", MioNS::conv_num_numchar(tmp)));
            else strcpy(num, MioNS::conv_num_numchar(tmp));
            out<<num<<":"<<l->val<<endl;
            l=l->next;
        
        out<<'\n';
    ;

希望代码不是问题。

错误

  Description   Resource    Path    Location    Type
    Cannot run program "sh" (in directory "E:\CPP\workspace\Prova1"): CreateProcess error=2, Impossibile trovare il file specificato    Prova1      -1  Configure Problem
    Function 'strcat' could not be resolved Prova1.cpp  /Prova1/src line 102    Semantic Error
    Function 'strcat' could not be resolved Prova1.cpp  /Prova1/src line 103    Semantic Error
    Function 'strcat' could not be resolved Prova1.cpp  /Prova1/src line 128    Semantic Error
    Function 'strcat' could not be resolved Prova1.cpp  /Prova1/src line 129    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 31 Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 102    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 103    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 104    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 128    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 129    Semantic Error
    Function 'strcpy' could not be resolved Prova1.cpp  /Prova1/src line 130    Semantic Error
    Function 'strlen' could not be resolved Prova1.cpp  /Prova1/src line 27 Semantic Error
    Program "g++" not found in PATH         Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings] options C/C++ Scanner Discovery Problem
    Program "gcc" not found in PATH         Preferences, C++/Build/Settings/Discovery, [CDT GCC Built-in Compiler Settings] options C/C++ Scanner Discovery Problem

【问题讨论】:

【参考方案1】:

对于问题 2:

要使用 strcpy、strlen 等函数,您必须包含字符串头文件。

#include<string.h>

#include<cstring>

对于问题 3:

您可以参考这些链接。

Eclipse C++ : "Program "g++" not found in PATH"

http://www.eclipse.org/forums/index.php/t/697857/

希望这会有所帮助。

【讨论】:

- 修复了 g++/gcc 问题----------- - #include 不是问题,因为它在其他包括中是有限的。------------------------ - 当我尝试运行(出现错误)时,Eclipse 没有找到 make .exe 所以我在 windows->preferences->*.... ---现在我仍然有 2 个问题:缺少字符串库和控制台中:“make: *** No targets specified and no makefile found. Stop.”

以上是关于函数“strlen”无法解析 - Eclipse cpp的主要内容,如果未能解决你的问题,请参考以下文章

无法解析为类型(jsp + eclipse)

sizeof和strlen解析

关于sizeof和strlen的一些题目解析

strlen() 函数

无法解析对应的JNI函数

无法解析构造函数:“dojox.mobile.RoundRectCategory”