小编Dan*_*son的帖子

在编译时复制C/C++函数

如果我有一个函数A(),我有兴趣找到一个方便的方法来创建一个功能B()完全相同的函数A(),仅在名称上有所不同.新功能将是一次性使用.目的是在一个有点原始的抽样分析器中区分对相同函数的调用,并且复制函数仅在此上下文中使用.也就是说,它永远不会触及生产代码,只能用于修补.

首先猜测是一个宏,它声明一个名为的函数,BA()在其内部创建一个内联调用.这里的问题是我不知道GCC中强制任意函数调用内联的方法; 似乎所有内联选项都是函数声明而不是调用.

使用模板可能有一些深奥的方法,或者可能通过欺骗编译器进行内联.我不确定这是可能的.有什么想法吗?不幸的是,新的C++标准不可用,如果它会有所作为.

c++ templates inlining c-preprocessor

3
推荐指数
1
解决办法
1015
查看次数

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)

c function-pointers

2
推荐指数
1
解决办法
274
查看次数

如何实现puts()函数?

我尝试实现 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

2
推荐指数
1
解决办法
8521
查看次数

C++指针问题

所以我现在正在学习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(顾名思义)应该是假的,但肯定不会那样.有人可以解释为什么它最终成为真实,如何使它成为正确的价值?谢谢!

c++ pointers

0
推荐指数
1
解决办法
1925
查看次数