[关闭]
@zhengyuhong 2015-05-31T07:59:37.000000Z 字数 918 阅读 1385

GCC技术参考大全

gcc g++ linux


g++

  g++是gcc的一个版本,默认语言设置为C++,在连接的时候自动包含标准C++库

指示字 描述
#define 定义宏名字,预处理程序会把这个宏扩展到使用该名字的位置
#elif 由#if指示字提供一个用于计算的可选表达式
#else 如果#if、#ifdef或#ifndef为假,提供一个用于编译的可选代码集合
#if 如果计算算术表达式的结果为非零值,就编译指示字和它匹配的#endif之间 的代码
#ifdef 如果已经定义了指定的宏,就编译指示字和它匹配的#endif之间的代码
#ifndef 如果没有定义指定的宏,就编译指示字和它匹配的#endif之间的代码
#include_next 和#include一样,但该指示字从查找到的目录之后的目录开始查找
#line 指出行号以及可能的文件名,报告给编译程序,用于创建目标文件中的调试信息
#pragma 提供额外信息的标准方法,可用来指出一个编译程序或一个平台。
#undef 删除前面用
#define 指示字创建的定义
#warning 由预处理程序创建的一个警告信息
## 连续操作符,可用于宏内将两个字符串连接成一个

#error,#warning

  1. #ifndef __linux__
  2. #error "This is not linux os"
  3. #endif

混合语言

  C++和C可以自然混合,但是有一个区别就是函数名,C语言使用原来简单的函数名,不考虑参数和参数类型(所有C语言没有函数重载),而C++总是将它的参数和参数类型当作函数签名,就是函数的一部分。还好C++提供一些特殊的功能可以声明C函数,也就是说,C++程序可以直接声明并且调用C函数。

  1. //main.cpp
  2. #include <iostream>
  3. extern "C" void hello();
  4. int main(int argc, char* argv[]) {
  5. hello();
  6. return 0;
  7. }
  8. //hello.c
  9. #include <stdio.h>
  10. void hello() {
  11. printf("hello\n");
  12. }
  1. gcc -c main.cpp -o main.o
  2. gcc -c hello.c -o hello.o
  3. gcc -o main hello.o main.o -lstdc++
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注