小编joH*_*oH1的帖子

为什么海湾合作委员会给我这个'-Wdiscarded-qualifiers'警告?

在C SDL的项目我的工作,我typedefchar *str了可读性.

现在我做的时候:

const str title = SDL_GetWindowTitle(win);
Run Code Online (Sandbox Code Playgroud)

其中SDL_GetWindowTitle返回const char *,我得到:

warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
Run Code Online (Sandbox Code Playgroud)

将类型更改为时,将删除警告char *:

const char *title = SDL_GetWindowTitle(win);
Run Code Online (Sandbox Code Playgroud)

typedef只是一个类型的别名,对吧?因此,将变量声明为strchar *应该等效,为什么我会收到警告?或者有什么我错过了......?

我在CLI上使用GCC,所以这不是IDE的错.

Thx提前!

c gcc typedef const compiler-warnings

2
推荐指数
1
解决办法
563
查看次数

`rune_t`类型在C中表示什么?

在浏览我的GCC标题时stddef.h,我遇到了一种我从未听说过的类型rune_t:

#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
#if __BSD_VISIBLE
#ifndef _RUNE_T_DECLARED
typedef __rune_t        rune_t;     /* <--- Here it is */
#define _RUNE_T_DECLARED
#endif
#endif
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

根据周围的#ifs,我猜它是FreeBSD特有的类型,但它代表什么?

奖金问题:它与符文字母有什么关系吗?

c types freebsd

2
推荐指数
1
解决办法
116
查看次数

GCC混淆标准标题与个人名称相同

在我正在进行的项目中,我命名了我的一个文件math.h,其中obvisouly也是标准库头的名称.

一切运行良好,直到我开始使用gcc的-I选项:我整理我的文件到不同的目录,比如src,objinc页眉.

我结束了类似的事情

gcc ... -Iinc/
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我使用的另一个库(SDL,顺便说一句)#include标准的 math.h头文件(位于/usr/include/math.h),而GCC给它自己的math.h(在like中找到/home/me/my_project/inc/math.h),显然这不能编译.

所以我的问题是,如何让GCC不认为我的标题是标准的?
当然我可以重命名该文件,但这只是避免了这个问题 - 即使我最终这样做,我希望知道解决方案,以防我再次遇到这个问题.

c gcc include

-5
推荐指数
1
解决办法
53
查看次数

标签 统计

c ×3

gcc ×2

compiler-warnings ×1

const ×1

freebsd ×1

include ×1

typedef ×1

types ×1