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语言的命令行参数非常简单,只需要一个简单的例子就可以说明: #include void m...

c/c++ 获取命令行参数示例

# a.out -d /data/ -i /tmp/a.txt -c 1 int main(int argc, char* argv[]) { //参数变量初始化 string type...
  • tsxw24
  • tsxw24
  • 2013年12月12日 14:50
  • 8767

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

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

C/C++头文件包含

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

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

最近再看Scott  Stevenson的《Cocoa

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

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

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

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

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

C++中的#include 放在头文件中还是放在cpp文件中? -  http://blog.sina.com.cn/s/blog_53b45874010177dk.html 今天下午遇到一...

C/C++不同文件夹下包含头文件的方法及#include的使用

Copy From: http://blog.sina.com.cn/s/blog_6e0693f70100so42.html 本文主要介绍了如何不同文件夹下使用预处理器指示符#include。 ...

C/C++防止头文件重复包含的方法

方式一: #ifndef __SOMEFILE_H__ //或写为#if !define __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++包含c头文件&读取程序输入参数
举报原因:
原因补充:

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