如果我有一个函数A(),我有兴趣找到一个方便的方法来创建一个功能B()完全相同的函数A(),仅在名称上有所不同.新功能将是一次性使用.目的是在一个有点原始的抽样分析器中区分对相同函数的调用,并且复制函数仅在此上下文中使用.也就是说,它永远不会触及生产代码,只能用于修补.
首先猜测是一个宏,它声明一个名为的函数,B并A()在其内部创建一个内联调用.这里的问题是我不知道GCC中强制任意函数调用内联的方法; 似乎所有内联选项都是函数声明而不是调用.
使用模板可能有一些深奥的方法,或者可能通过欺骗编译器进行内联.我不确定这是可能的.有什么想法吗?不幸的是,新的C++标准不可用,如果它会有所作为.
对于一个类,我正在编写一个简单的crypt函数.一切都按预期工作:
int crypt(char *key, int (*callback)(int, char*, int, int))
{
int c, i = 0, n = strlen(key);
while((c = fgetc(stdin)) != EOF)
{
// only change the char if it's printable
if(c >= 32 && c <= 126)
c = callback(c, key, n, i);
fputc(c, stdout);
i++;
}
}
int encryptCallback(int c, char *key, int n, int i)
{
return (c - 32 + key[i % n]) % 95 + 32;
}
int decryptCallback(int c, char *key, int n, …Run Code Online (Sandbox Code Playgroud) 我尝试实现 put 函数。它实际上返回一个值,但我无法得到它应该返回的值。请检查我的代码并进一步指导我
/* implementation of puts function */
#include<stdio.h>
#include<conio.h>
void puts(string)
{
int i;
for(i=0; ;i++)
{
if(string[i]=='\0')
{
printf("\n");
break;
}
printf("%c",string[i]);
}
}
Run Code Online (Sandbox Code Playgroud) 所以我现在正在学习C++,而我正试图用指针来解决问题.任何人都可以解释以下情况:
bool testFalse = false; //testFalse = false
bool *thisIsFalse = &testFalse; //value of address of thisIsFalse shows that the address contains false
bool shouldBeFalse = &thisIsFalse; //shouldBeFalse = true is what I get here
Run Code Online (Sandbox Code Playgroud)
shouldBeFalse(顾名思义)应该是假的,但肯定不会那样.有人可以解释为什么它最终成为真实,如何使它成为正确的价值?谢谢!