On Tue, Jan 25, 2011 at 12:58 PM, Marcel Holtmann <[email protected]> wrote:
> Hi Lucas,
>
>> >> -                     const char *old, const char *new,
>> >> +                     const char *p_old, const char *p_new,
>> >>                       ofono_sim_lock_unlock_cb_t cb, void *data);
>> >>       void (*lock)(struct ofono_sim *sim, enum ofono_sim_password_type 
>> >> type,
>> >>                       int enable, const char *passwd,
>> >
>> > why is this exactly a problem?
>>
>> I did it only because the file contains this:
>>
>> #ifdef __cplusplus
>> extern "C" {
>> #endif
>>
>>
>> So I thought someone might want to write a plugin in C++ or something
>> that includes sim.h
>
> and at that point you told the compiler that it is C code and not C++
> and it should be just fine.

This only works for the link phase, because of the name mangling in C++.

> I think it will compile just fine. Try to test it ;)

It doesn't. Example:

c.h
---
#ifdef __cplusplus
extern "C" {
#endif

int func(int *old, int *new);


#ifdef __cplusplus
}
#endif

---

cpp.cpp
---
#include <iostream>
#include "c.h"

using namespace std;


int main(int argc, char *argv[])
{
    int a = 2;
    int b = 3;


    cout << "Isso é um teste\n";

    return func(&a, &b);
}

---

$ g++ -c -o cpp.o cpp.cpp
In file included from cpp.cpp:2:0:
c.h:5:25: error: expected ‘,’ or ‘...’ before ‘new’



regards

Lucas De Marchi
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to