首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANSI-C不知道inline关键字吗?

ANSI-C不知道inline关键字吗?
EN

Stack Overflow用户
提问于 2012-08-28 08:04:46
回答 4查看 9.4K关注 0票数 15

在编译像这样简单的东西时

代码语言:javascript
复制
inline int test() { return 3; }

int main()
{
 test();
 return 0;
}

使用gcc -c test.c,一切都很顺利。如果添加了-ansi关键字gcc -ansi -c test.c,则会收到错误消息

代码语言:javascript
复制
test.c:1:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘int’

即使明确选择了C99标准,gcc -std=c99 -ansi -c test.c也是如此。

出现这种情况的原因是什么?是否有推荐的修复方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-28 08:07:54

您需要使用:

代码语言:javascript
复制
gcc -std=c99 -c test.c

The -ansi flag specifies c90

-ansi选项等同于-std=c90。

ANSI C实际上是1990年的C版本,它不包括inline关键字。

票数 16
EN

Stack Overflow用户

发布于 2012-08-28 08:07:38

不,ANSI没有inline

您的第二个命令实际上使用-ansi覆盖了-std=c99 (它们都会影响-std=),因此您实际上是在使用ANSI进行编译(不使用C99)。

票数 13
EN

Stack Overflow用户

发布于 2012-08-28 08:09:15

inline关键字

不是原始ANSI标准(C89)的一部分,因此默认情况下,该库不会导出任何内联函数定义。内联函数是在较新的C99标准中正式引入的,但是大多数C89编译器也在很长一段时间内包含了内联作为一个扩展。

引用自Gnu website

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12151168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档