最近做linux下开发,发现一些莫名其妙的语法,记录之。
一.函数定义
看到很多开源代码,函数定义比较特殊,见下面这种形式:
int add(a,b) int a; int b; { return a+b; }
参数类型不放在括号内,反而单独提出来定义,第一次见到这样的写法,刚开始我模仿这种形式代码,折腾了半天也没编译过去。后来发现这种语法是gcc特有的(windows下无法编译),只能用gcc命令编译 ,无法在g++下编译。
二. 变量初始化
C中,变量初始化写法直接通过=赋值即可,int a = 1;
C++中,由于引入对象类型,对象初始化,直接在构造函数内初始化变量,如 Square square(20,20)。
但是对于基本类型,如int a(5) 这种语法竟然也是正确的,该代码无法在gcc命令下编译
三. 奇怪的switch
swith(code) { case '0' ... '9': break; }
上面的case语句匹配多个连续条件,可惜只能在g++下编译
四. __attribute__ 语法
gcc下最麻烦就是这个了,__attribute__支持的语法规则非常多
相关推荐
__asm__ __volatile__ GCC的内嵌汇编语法说明,看Linux内核必备
摘要:介绍了GCC抽象语法树的结构及在编译过程中的作用。给出解析抽象语法树所使用的词法规则和语法规则, 提出了解析 GCC 抽象语法树的方法 。关键词:抽象语法
内嵌汇编
这里是我在网上收集的,然后转换成PDF的,希望对大家有用。
如何在GCC实现C语言中内嵌汇编,很好的资料
ARM GCC 内联汇编参考手册
较为详细的说明了在gcc平台下,如何在c中嵌入汇编语法
GCC内联汇编, C语言嵌入汇编,AT&T Intel语法区别
GCC常见错误解析,非常有用的东东,语法错误,头文件错误,未定义符号等错误原因分析
讨论AT&T 的汇编语法,以及GCC 的内嵌汇编语法。
gcc源代码的总结主要包括语法树的操作,和对程序的解析。
gcc manual gcc手册 gcc manual gcc手册 gcc manual gcc手册 gcc manual gcc手册
gcc、gcc++ 离线安装包
gcc各版本文档,具体包括: gcc11_2、gcc10_3、gcc9_4、gcc8_5、gcc7_5、gcc6_5、gcc5_5、gcc4_9_4、gcc4_8_5、gcc4_7_4、gcc4_6_4、gcc4_5_4、gcc4_4_7、gcc4_3_6、gcc4_2_4、gcc4_1_2、gcc4_0_4、gcc3_4_6
离线安装GCC与GCC-C++
本文详细的描述了GCC连接器连接脚本的基本编写规则,以及提供了居多的例子以供可以更好的理解学习。希望可以帮助到大家
从mini安装版centos7.5提取出来的gcc和gcc-c++安装包,下载后放到服务器解压,并cd到该目录,执行 rpm -Uvh *.rpm,安装完成后,运行gcc -v,g++ -v,会出现版本信息,则完成
GCC Link脚本语法与编码手册
对于程序员来说,标准对于咱们是很重要的,目前gcc对标准C进行了51相扩充,希望你早点用上
ARM GCC linker 链接脚本语法