zoukankan      html  css  js  c++  java
  • c99和c++11的差异之一

    #include <stdio.h>

    void main(){

      printf("hello world. ");

    }

    gcc hello.c -o hello -std=c99

    编译通过。

    但通过如下编译则失败——

    g++ hello.c -o hello -std=c++11

    失败信息为:

    hello.c:3:11: error: ‘::main’ must return ‘int’
    void main()
    ^

    这是因为在c+11中,main必须为int类型,但却可以不必有返回值;修改代码为如下即可——

    #include <stdio.h>

    int main(){

      printf("hello world. ");

      /*return 0;  可以不需要这行*/

    }

    附gcc/g++编译命令集合:

    //编译生成可执行文件
    g++ -o hello hello.cpp
    //运行
    ./hello
    GCC编译命令
    gcc -v 查看版本
    查找g++的命令帮助 键入 info g++,会显示出gcc的帮助信息,g++大部分参数和gcc命令相同
    选项 解释
    -ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,
    例如 asm 或 typeof 关键词。
    -c -o只编译并生成目标文件。
    -DMACRO 以字符串“1”定义 MACRO 宏。
    -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。
    -E 只运行 C 预编译器。
    -g 生成调试信息。GNU 调试器可利用该信息。
    -IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
    -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
    -lLIBRARY 连接时搜索指定的函数库LIBRARY。
    -m486 针对 486 进行代码优化。
    -o FILE 生成指定的输出文件。用在生成可执行文件时。
    -O0 不进行优化处理。
    -O 或 -O1 优化生成代码。
    -O2 进一步优化。
    -O3 比 -O2 更进一步优化,包括 inline 函数。
    -shared 生成共享目标文件。通常用在建立共享库时。
    -static 禁止使用共享连接。
    -UMACRO 取消对 MACRO 宏的定义。
    -w 不生成任何警告信息。
    -Wall 生成所有警告信息。
    g++ -o 目标文件名 源文件名
    ldd programm 查看programm程序所依赖的共享库(.so)文件
    ar crv mm.a x.o y.o 将x.o和y.o合并到一个静态库mm.a文件中
    ranlib mm.a 生成静态库的内容表 (不是必须)
    emacs基本命令
    ctrl+x+f 打开文件
    ctrl+x+d 打开目录,查看该目录的子目录
    ctrl+x+s 保存当前buffer里的文件
    ctrl+s 查找当前buffer里的文本
    rename-buffer 修改当前缓冲区的名字
    ctrl+shift+ - 回退
    ctrl+alt+ 对选中的代码进行格式化
    ctrl+x 松开后 按o 在不同的缓冲区移动焦点
    alt+x选中命令缓冲区
    ctrl+g取消当前命令
    alt+w 复制被选中的代码
    ctrl+y 粘帖代码
    ctrl+w 剪切代码
    ctrl+x 松掉后按backspace 设置断点
    ctrl+x+k 关闭当前缓冲区
    GDB调试命令
    查看gdb帮助信息 gdb –help
    注意g++编译时,使用-g命令
    gdb 已编译的程序文件名
    list 显示源代码
    break命令设置断点,可以后面加上函数名称
    delete breakpoints 删除所有断点
    run 运行程序
    step <count> 单步跟踪(自动进入函数)
    next <count> 单步跟踪(不自动进入函数)
    continue 继续运行
    print 变量名查看某变量的值,调试过程中改变某变量的值
    info breakpoints 查看程序中断点设置的信息
    quit 退出
    info thread 列出多个线程号。 thread 查看当前线程号 thread 线程号 选择进入哪个线程进行调试。
    Unicode和MultiBytes 字符串的转换
    #include <wchar.h>
    size_t wcsrtombs (char *dest, const wchar_t **src, size_t len, mbstate_t *ps);
    #include <stdlib.h>
    size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);
    环境变量
    查看环境变量
    env
    env也可以用来设置环境变量的值,具体看env --help
    set 也可是设置环境变量
    如果环境变量在一个terminal里设置,就只对这个terminal有效
    如果想全局的设置,需要修改
    /etc/profile文件

  • 相关阅读:
    关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法
    关于ligerUI中ligerTree代码中的一个bug,造成该控件无法通过url的POST方式加载数据
    通过注册表控制软件可否运行
    SQL 分组后获取其中一个字段最大值的整条记录
    sqlserver2005唯一性约束
    正则表达式
    关于AfterLogic WebMail 的.net版无法上传控件的解决办法
    使用openrowset跨库查询
    [转载]SQL字符串处理函数大全
    Tomcat 内存和线程配置优化
  • 原文地址:https://www.cnblogs.com/atoman/p/7374632.html
Copyright © 2011-2022 走看看