[sigc] Renaming nil
- From: Régis Duchesne <hpreg vmware com>
- To: libsigc-list gnome org
- Subject: [sigc] Renaming nil
- Date: Tue, 23 May 2006 14:01:24 -0700
Folks,
I need to include libsigc++ (C++) header files from an Objective-C++ 
file (yes, there is such a monstrosity). It fails to compile.
The problem is that:
o libsigc++ defines sigc::nil
o 'nil' is a reserved keyword of Objective-C (just like 'return' is a 
reserved keyword of C)
o Objective-C++ is a superset of Objective-C
For a few months, the workaround I used was to put this at the top of my 
Objective-C++ files, _before_ including any sigc header, of course:
   #define nil empty
Now is the time for me to do things right, and submit a fix upstream to 
libsigc++.
There are a few questions though:
1) Which name should we use instead of 'nil'? Murray recommends 'none'. 
I don't really care. I think the name is mostly seen during compile 
failures and debugging sessions. So we want something short, and we want 
something that is unlikely to conflict with C++-compatible languages.
2) Should we do the rename unconditionally or only if the headers are 
being read by an Objective-C++ compiler? I think it is fine to do it 
conditionally, to avoid introducing any source incompatibility (although 
I don't think people actually use 'nil' in their source code in 
practice, it is theoretically possible they are).
3) Will this introduce any binary incompatibility? Murray and I think it 
won't, because sigc::nil is only declared as a type, but it is never 
instantiated. As such, we don't think the libsigc++ library binary 
actually cares about it. And so far, my experiment seems to confirm that 
(linking and running my Objective-C++ code against the libsigc++ library 
binary seems to work fine). Is there a way to know for sure?
Your advise is welcome,
--
Regis "HPReg" Duchesne
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]