Somehow the tag synonym [cpp] for [c++] got official and then merged, seemingly without anyone noticing that cpp is the C preprocessor.

For normal users that info is gone now after the tags were merged, so is there any sensible way to fix this?
Or are my worries unfounded and the tag [cpp] was manually checked before being merged?

closed as off-topic by CRABOLO, random, Monica Cellio, nicael, Aziz Shaikh Dec 2 '14 at 5:40

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question pertains only to a specific site in the Stack Exchange Network. Questions on Meta Stack Exchange should pertain to our network or software that drives it as a whole, within the guidelines defined in the help center. You should ask this question on the meta site where your concern originated." – CRABOLO, random, Monica Cellio, nicael, Aziz Shaikh
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 12
    Congratulations! You have discovered and documented the single most egregious abuse of the C preprocessor :) – Tim Post Aug 15 '10 at 17:10
  • 2
    bad, bad [cpp]! – Nick Dandoulakis Aug 15 '10 at 18:40
  • On a not very related note, do we really need a [preprocessor] and a [preprocessor-directives] tag? I'd think [preprocessor] is more than sufficient. – James McNellis Aug 15 '10 at 23:42
  • @James: I agree, same with preprocessor-definitions and preprocessor-abuse. New [discussion] maybe? – Georg Fritzsche Aug 16 '10 at 1:16
  • "Or are my worries unfounded and the tag [cpp] was manually checked before being merged?" we have no audit trail ... so I'll take the blame for it, we tried looking through questions during the 300 or so merges we ran in the last few weeks, it appears this one fell through the cracks, and then went unnoticed for many weeks. Sorry. – waffles Aug 16 '10 at 1:22

This merge happened way back in January, far before the synonym system.

Here's a log of all logged tag merges involving [c++]

2010-08-06   Jeff Atwood      [visual-c++] into [msvc]
2010-07-16   Sam Saffron      [visual-c++] into [vc++]
2010-04-16   Bill the Lizard  [c++-cli] into [c++cli]
2010-01-11   Marc Gravell     [c++] into [cpp]
2009-07-20   Marc Gravell     [c++cli] into [c++-cli]
2009-07-20   Marc Gravell     [c++cli] into [c++clr]
2009-07-20   Marc Gravell     [standard-c++-library] into [c++-standard-library]
2009-07-20   Marc Gravell     [dev-c++] into [devc++]
2009-07-20   Marc Gravell     [visualc++2008-express] into [visual-c++-2008-express]
2009-07-20   Marc Gravell     [visual-c++] into [msvc++]
2009-07-20   Marc Gravell     [visual-c++] into [vc++]
2009-07-10   Marc Gravell     [visual-c++] into [visualc++]

Oh god. More votes need to be require for tag synonyms, there needs to be a way for the community to undo things that slipped under the radar, and we need a way to determine what the original tag was on existing questions.

I'm seeing several questions that are probably erroneously tagged C++, but there doesn't seem to be any way to determine for sure. e.g.:

Can you nest C preprocessor directives?

Is there any cure for the preprocessor blues?

Can you nest C preprocessor directives?

Is it possible to print a preprocessor variable in C?

And an update with a few more:

Is there a GCC preprocessor directive to check if the code is being compiled on a 64 bit machine?

What's the meaning of #line in C language?

C Macro definition to determine big endian or little endian machine?

Tim, I need to borrow your desk.

  • 5
    I'm going to look as well, just as soon as I'm done banging my head on my desk. – Tim Post Aug 15 '10 at 17:14
  • I would not say that something asking about preprocessor is not a C++ question. The C++ language contains the preprocessor after all, and there are differences between the preprocessor of C++ and C (C99 does allow variadic arguments, while currently the C++ preprocessor does not). – Johannes Schaub - litb Aug 15 '10 at 18:24
  • @litb: There is no evidence that any of the questions I linked to has anything to do with C++ or that the asker was using C++. As you point out, the C and C++ preprocessors are different, therefore just because a question is about the C preprocessor does not mean it can rightly be tagged C++. – Nicholas Knight Aug 15 '10 at 18:38
  • @Nicholas the questions i have looked at were tagged that way by the question poster (not sure what happens to tag edits during the grace period though). If the tagging would have been done by others later on, I would agree. – Johannes Schaub - litb Aug 15 '10 at 18:52
  • 3
    @litb: No, because of the way tag synonyms work, you can't determine that, which is part of the problem. We have no way to differentiate between which questions were tagged c++ by the poster, and which were tagged cpp. Synonymization leaves no edit history. From the perspective of an ordinary user, it's as if a massive, retroactive, and completely undetectable search and replace was done on the database. – Nicholas Knight Aug 15 '10 at 18:59
  • @Nicholas ohh i see now! I had no idea, this is no good :( – Johannes Schaub - litb Aug 15 '10 at 19:04
  • The same goes for mass-tag-merges that occured for many synonymed tags - they are also not visible in the history. – Georg Fritzsche Aug 15 '10 at 21:53
  • @Nicholas: Synonyms only apply to new posts/edits, they don't automatically modify old posts. For that still a moderator is needed who merges the two tags explicitly (but such a mass-retag doesn't leave any edit history). – sth Aug 15 '10 at 22:00
  • 1
    oh my god ! one out of 600 synonyms is arguably bad ... the whole system is broken ... we need more votes !!! – waffles Aug 16 '10 at 1:19
  • 2
    @waffles: This isn't the first stupid synonym, there are probably more still lurking, and there will be more in the future. This one is just a particularly egregious example. Apparently, though, the ridiculously low vote threshold isn't to blame here -- you are. So maybe you could consider not being a jerk to boot? – Nicholas Knight Aug 16 '10 at 1:29
  • stupid synonyms are easy to fix, you just raise them on meta, I delete them, done... not having an audit trail and being able to undo a merge is a major piece of work that would require approval by Jeff. Bring that up as a separate issue, get some people to vote for it. – waffles Aug 16 '10 at 1:33
  • persistent stupid synonyms are harder to fix, ones where the community decides incorrectly that one makes sense when it does not. to fix that we would have to amend our voting algorithm ... I have only come across one annoying one like that to date ... ecmascript -> javascript ... – waffles Aug 16 '10 at 1:35
  • @waffles: this is a serious issue but it looks like you are taking it personally (it's obviously not personal) and just dismissing it as not a big deal. The fact that only 3 people can permanently destroy a tag is chilling. Think if I create a few additional accounts and get to 2000 reputation (trivial), then propose a tag synonym for C++ => C and upvote myself. The C++ tag will be permanently gone. – Thomas Bonini Aug 16 '10 at 1:40
  • 2
    MODERATORS MUST PERFORM A MANUAL MERGE TO FIX THE PAST 3 people can create a bad synonym, that only has an affect going forward. Then moderators look here stackoverflow.com/tags/synonyms?tab=newest&filter=merge and decide what to merge or nuke – waffles Aug 16 '10 at 1:42
  • I am tempted to add a "permanent disallow" mod facility for synonyms – waffles Aug 16 '10 at 1:44

Alright, I'll admit it; I'm the one who started the [cpp] <-> [c++] tag synonym vote. :(

I was (as usual) awake late, when I saw this new sparkly info tab! What could it be? (I hadn't read about it at all.) I saw the tag synonym and thought "Oh, I could be one of the first to propose one!"

I pondered for something to propose, and I recalled that long ago a question had [cpp] instead of [c++] and thought, "Hm, perhaps that'll do." I know cpp is the C Preprocessor, but I checked the tag anyway.

And to my surprise, if I remember correctly, there were no questions tagged cpp. (Probably due to this.) It was surprising but I didn't care.

So I went ahead and proposed it, and it was voted in, and I felt joyous and happy. But now I am full of regret at what I've done to the poor C preprocessor. :( I'm sorry poor C preprocessor.

(Had there been any C preprocessor questions under the [cpp] tag I'm sure I would have left it alone.)


The two tags were already merged earlier, even before the arrival of tag synonyms. I remember a discussion about it that I found here on meta when I first noticed the new synonym. I can't find it anymore, probably it was on a retag request and has since then been deleted. (Edit: It was this retag-request, now undeleted)

The reasoning could be that many people use "cpp" as a tag for C++, so that most questions with [cpp] aren't actually about the C preprocessor. If [cpp] is generally used with the meaning "C++", it doesn't help that it could/should really mean "C preprocessor".

The questions about the C preprocessor could also be tagged [c] [preprocessor].

  • 5
    Tags shouldn't be synonyms just because they can mean the same thing, or even usually mean the same thing. Tag synonyms are for things that are unambiguously identical. c++ and cpp are most assuredly not unambiguously identical, cpp attached to C++ questions that don't involve the preprocessor are tagged incorrectly and should be retagged. – Nicholas Knight Aug 15 '10 at 17:41
  • Even if most uses of cpp are meant as c++ (no way to check this now as i can't see the relevant information), a merge without manual checking/retagging is just plain wrong. – Georg Fritzsche Aug 15 '10 at 17:44
  • Do you remember how long the request lived (here on meta) or when it was posted? I don't remember noticing it. – Tim Post Aug 15 '10 at 17:51
  • I second the two separate tags. The preprocessor is part of the respective languages, and is not a language of its own. It's just commonly implemented as such. Cpp to me seems more likely mean C++ than c-preprocessor, but i don't think this justifies a synonym entry. – Johannes Schaub - litb Aug 15 '10 at 18:26
  • @Tim Post: AFAIR it was a rather old request and I found it recently, soon after the cpp -> c++ synonym was established. It contained some comment like "Now after all these troubles with the C++ tag (URL encoding etc.), since it works again, let's use it and abolish that [cpp] tag people were using instead." Now I can't find any trace of it anymore, so I'm not sure of the title etc. – sth Aug 15 '10 at 19:11
  • Thanks @sth, oh what a lovely mess this is. – Tim Post Aug 15 '10 at 19:57
  • The retag-request I was talking about is this one here: meta.stackexchange.com/questions/35192 (10k only) – sth Aug 15 '10 at 21:52
  • 5
    @sth: well, that proves yet again why batching up multiple, unrelated retag requests into a single proposal is a bad idea. No discussion at all. – Shog9 Aug 15 '10 at 22:14

Fixing an incorrect merge is very complicated.

Our MODERATOR ONLY merge process does not store the old list of questions with the previous tag anywhere. It simply does a global replace with no undo.

Further more, the tag is not even in the July dump (which is loaded into http://odata.stackexchange.com).

To fix this we would need to load up a database backup prior to the date this happened. And retag the affected questions.

Personally, I feel the "cpp" tag name is very confusing and misleading, as it could be used by newbies to describe "c++" (being the file extension and all)

  • Ouch, sad to hear. As for [cpp], maybe banning to force [c]+[preprocessor] et al or [c++] would help? I think the only alternative would be regular manual inspection. – Georg Fritzsche Aug 16 '10 at 1:21
  • I deleted the [cpp] synonym, we have no dynamic banning facility (which would need to return an error message if it were built) ... it appears it was created on July 22, so a backup prior to then would contain the questions with the tags (eg. the june data dump) – waffles Aug 16 '10 at 1:27
  • Apparently the mistake was already done before in january, so we'd have to work through the december and the june dump. Are those maybe accessible online somewhere as nicely as the data-explorer so a list could be linked to? – Georg Fritzsche Aug 16 '10 at 1:48
  • Well, all the historic data dumps are still there and downloadable via clearbits – waffles Aug 16 '10 at 1:56

If i haven't overlooked anything, there wasn't any real problem with merges. As per Jeffs answer, the last merge occured on 2010-01-11 and the [cpp] questions (only 4) from the 2009 Dec dump look fine:

Not the answer you're looking for? Browse other questions tagged .