删除c中双引号的宏
是否有任何宏可以删除字符串中的双引号和“\0”?
例如:- “你好\0”->你好
编辑:- 其实我想获取函数地址。所以我想使用 FUNC 宏来获取函数名称并去掉双引号和 '\0' 将帮助我获取函数地址。
例如:
#define FUN_PTR fun
#define FUN_NAME "fun"
void fun(){
printf("fun add %p name %s\n",FUN_PTR,FUN_NAME);
}
避免用户定义宏。我想知道获得这些功能的其他方法:)。
void fun(){
printf("fun add %p name %s\n",<SOME_MACRO>(__FUNC__),__FUNC__);
}
Is there any macro which will remove double quotes and '\0' in a string?
For example:-
"HELLO\0" -> HELLO
Edited:-
Actually I want to get the function address. So I thought to use FUNC Macro to get the function name and stipping out double quotes and '\0' will help me to get the function address.
for ex:
#define FUN_PTR fun
#define FUN_NAME "fun"
void fun(){
printf("fun add %p name %s\n",FUN_PTR,FUN_NAME);
}
To avoid user define macros. I like to know other methods to derive these functionality :).
void fun(){
printf("fun add %p name %s\n",<SOME_MACRO>(__FUNC__),__FUNC__);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
反过来做。
在宏内部,如果
x
是宏参数,则#x
是字符串版本。通常,如果您经常使用它,那么您将需要定义一个辅助函数来解决 C 中的弱类型系统:
请注意,这对于获取当前函数的地址不起作用。
__FUNC__
不是宏,也不是字符串文字,它没有双引号。如果没有一些严重的技巧,你就不能使用 __FUNC__ 来获取函数的地址,而且它一半的时间都会中断。例如:然而,这有一半的时间是行不通的——
dlsym
并不是为这个目的而设计的。Do it the other way around.
Inside a macro, if
x
is a macro argument, then#x
is the string version.Typically, if you use this a lot, then you'll want to define a helper function to work around the weak type system in C:
Note that this won't work for getting the address of the current function.
__FUNC__
is not a macro and it is not a string literal, it has no double quotes. You cannot use__FUNC__
to get the address of the function without some serious trickery, and it will break half the time. For example:However, this will not work half the time --
dlsym
wasn't designed to be used for that purpose.