C++包含c头文件&读取程序输入参数

原创 2016年05月30日 21:45:02

还是那个Linux移植的工程,出了简单的移植外,还要在原有代码的基础上做2次开发,但原先的工程是给专业人士用的,用c写的在Linux下的命令行运行,现在为了方便非专业人员使用需要移植到Windows平台下,还要搭配上一个一个GUI界面,由于本人只会C++写界面,所以选择了C++进行二次开发。

Q1:在C++文件中包含C头文件报错,undefined reference

A1:出现问题的原因是c库函数编译成obj文件时对函数符号的处理和C 不同。因为C ++函数支持重载,所以函数符号的处理要更复杂一些,c往往不作修饰。同一个函数,c编译出来的方法名要比c++简单一些,两者的obj中方法名不同,自然在连接时会出现undefined reference错误了。

解决办法:使用extern "c"{#include xxx}包含c头文件

Q2:c语言是如何读取命令行参数呢?

A2:我在接手这个项目之前都以为这个需要自己动手解析,因为自己这方面之前确实没接触过,后来发现有个getopt()的库函数可以很轻松的帮助我们完成解析。

#include <getopt.h>

opt =  getopt(
                argc,
                argv,
                "s:d:S:D:i:I:r:R:a:A:t:o:f:k:w:q:Q:y:h:z:g:c:C:e:E:u:U:p:P:mNlLXV")) != -1) {
        switch (opt) {
        case 's':cout<<optarg;
        case  'd':
    .....}<span style="font-family: Arial, Helvetica, sans-serif;">}</span>

getopt(<参数数量>,<参数串>,<各参数标识>),

然后opt被赋予标识,optarg被赋予对应的参数值,并循环处理读取所有参数。

值得注意的是,这个方法需要使用一些头文件中的参数,有时会因为参数未清零出现一些问题。

头文件:http://opensource.apple.com//source/bc/bc-21/bc/h/getopt.h

C/C++标准输入输出与文件输入输出

C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数: 标准输入输出: 1. scanf, printf int scanf(const char *format, a...
  • xiao_0429
  • xiao_0429
  • 2013年09月29日 17:41
  • 15244

C语言中头文件相互包含问题

.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。   1)h文件作用    1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明; ...
  • Vonssss
  • Vonssss
  • 2014年10月11日 14:31
  • 2617

c源文件中要包含自己的头文件

引言:             我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。现在,我知道了。 以前的认知:  我认为,.c文件没有必要包含自己的.h文件。.h...
  • khwkhwkhw
  • khwkhwkhw
  • 2015年11月12日 14:43
  • 1659

C/C++头文件包含

  • 2010年08月08日 11:32
  • 66KB
  • 下载

C语言的头文件大全c和C++都包含

  • 2010年01月31日 11:43
  • 3.31MB
  • 下载

NetBeans运行包含头文件的c程序

最近再看Scott  Stevenson的《Cocoa
  • mowangmm
  • mowangmm
  • 2014年07月10日 14:42
  • 1105

写一个标准的c程序需要包含的头文件

写一个标准的c程序需要包含的头文件 这里说的写一个标准的c程序,真的就是一个标准的c程序,不能包含一点c++编程的习惯,这样为了以后编程的规范。之前一直不注意这个问题,今天做华为的机试的时候,就吃...
  • u011484045
  • u011484045
  • 2015年09月12日 22:06
  • 1003

C程序中头文件相互包含精华

C程序中头文件相互包含精华(网摘小结) 收藏 .h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。 1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,...
  • lanbingluyu
  • lanbingluyu
  • 2011年08月30日 00:25
  • 1478

C/C++ 中头文件相互包含引发的问题

C++中的#include 放在头文件中还是放在cpp文件中? -  http://blog.sina.com.cn/s/blog_53b45874010177dk.html 今天下午遇到一...
  • u013321328
  • u013321328
  • 2016年11月19日 13:59
  • 869

C/C++头文件包含顺序注意事项

作者:朱金灿 来源:http://www.cnblogs.com/clever101   一.《Google C++ 编程风格指南》里的观点        最近公司在推行编码规范,领导提议基...
  • qingyang_0
  • qingyang_0
  • 2013年06月18日 15:41
  • 704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++包含c头文件&读取程序输入参数
举报原因:
原因补充:

(最多只允许输入30个字)