Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

With the wrapper in the same file, clang threw an error because the definition conflicted with the implied prototype.


Doesn't happen for me. Both GCC and Clang compile it fine.


Strange. Here's my erroring code:

    int main()
    {
        int* p;
        p = (int*)wrapped_malloc(sizeof(int));
        *p = 10;
        return 0;
    }
    
    void *wrapped_malloc(int size) {
        return malloc(size);
    }
And the actual error:

    test.c:9:11: error: conflicting types for 'wrapped_malloc'
        void *wrapped_malloc(int size) {
              ^
    test.c:4:19: note: previous implicit declaration is here
            p = (int*)wrapped_malloc(sizeof(int));
Are you doing anything differently?


Try putting wrapped_malloc above main. Or at least declaring it above main.


If it's above main then there's no longer an implicit prototype and you're no longer replicating the problem.


No, I am not sure why this happens.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: