C/C++获取当前函数名及所在行行数

本文介绍了C语言中预处理器宏__FUNCSIG__、__FUNCDNAME__和__FUNCTION__的作用,展示了如何使用这些宏来获取函数签名及名称信息,并通过示例说明了它们的区别。此外还介绍了如何利用__LINE__宏获取当前代码行号。

关键字分别为:__FUNCDNAME__、__FUNCTION__、__FUNCSIG__

  1. __FUNCSIG__表示可以获取函数名的详细信息,如下所示:
    printf("FUNCINFO:%s\n",__FUNCSIG__);
    输出:FUNCINFO:int __cdecl parse_AllCur_SeqImgInfo_BothMode(char *,struct ImageInfo *)
  2. __FUNCDNAME____FUNCTION__则仅可以获取函数名信息,如下所示:
    printf("FUNCINFO:%s\n",__FUNCTION__);
    输出:FUNCINFO:parse_AllCur_SeqImgInfo_BothMode
    printf("FUNCINFO:%s\n",__FUNCDNAME__);
    输出:
    FUNCINFO:_parse_AllCur_SeqImgInfo_BothMode
  3. __LINE__ 即可获得当前代码所在行的行数


文本查询 该程序将读取用户指定的任意文本文件【当前目录下的china_daily.txt】,然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数,并列出每次出现所在的行。如果某单词在同一行中多次出现,程序将只显示该行一 次。行号按升序显示。 要求: a、它必须允许用户指明要处理的文件名字。 b、程序将存储该文件的内容,以便输出每个单词所在的原始行。 ```C++ vector<string> _lines; ``` c、它必须将每一行分解为各个单词,并记录每个单词所在的所有行。在输出行号时,应保证以升序输出,并且不重复。 ```C++ map<string, set<int> > _word2Numbers; map<string, int> _dict; ``` ​ d、对特定单词的查询将返回出现该单词的所有行的行号。 e、输出某单词所在的行文本时,程序必须能根据给定的行号从输入文件中获取相应的行。 ​ 示例: 使用提供的文件内容,然后查找单词 "element"。输出的前几行为: ```C++ element occurs 125 times. (line 62) element with a given key. (line 64) second element with the same key. (line 153) element |==| operator. (line 250) the element type. (line 398) corresponding element. 程序接口[可选]: class TextQuery { public: //...... void readFile(const string filename); void query(const string &word);//查询和打印耦合在一起了 private: //...... vector<string> _lines; map<string, set<int> > _word2Numbers; map<string, int> _dict; }; void print(ostream & os, const QueryResult &); //程序测试用例 int main(int argc, char *argv[]) { string queryWord("hello"); TextQuery tq; tq.readFile("test.dat"); tq.query(queryWord); return 0; }
最新发布
07-09
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值