关闭

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

标签: cc++头文件
279人阅读 评论(0) 收藏 举报
分类:

还是那个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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:251960次
    • 积分:631
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条