gpt4 book ai didi

c++ - g++ 4.3.4 编译器中的编译错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:22 26 4
gpt4 key购买 nike

#include <iostream> 
#include <string.h>
char* basename(const char* filname);
int main()
{
return 0;
}
char *basename(const char* filename)
{
char* base = (char *)filename;
return base ;
}

在 g++ 4.1.2 20070115 (SUSE 10) 上编译:没问题

在 g++ 4.3.4 (SUSE 11) 上编译出现以下错误

fileName : 9 :error:declaration of char* basename(const char*) 抛出不同的异常

fileName:3:error: from previous declaration char* basename(const char*) throw () .

请告诉我为什么会这样,这两个版本之间 g++ 中是否有任何接口(interface)更改(如果我删除包含的 string.h 那么两个版本的 g++ 编译成功,string.h 中是否有任何接口(interface)更改) .

最佳答案

看起来 basename 已经在 string.h 中定义了

# ifndef basename
/* Return the file name within directory of FILENAME. We don't
declare the function if the `basename' macro is available (defined
in <libgen.h>) which makes the XPG version of this function
available. */
# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" char *basename (char *__filename)
__THROW __asm ("basename") __nonnull ((1));
extern "C++" __const char *basename (__const char *__filename)
__THROW __asm ("basename") __nonnull ((1));
# else
extern char *basename (__const char *__filename) __THROW __nonnull ((1));
# endif
# endif

关于c++ - g++ 4.3.4 编译器中的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com