preprocessor

MVC Helper Extension issue

I need to implement a HtmlHelper extension in my MVC project simply just to output some string but ONLY in the DEBUG mode, not in RELEASE. My first attempt would be: [Conditional("DEBUG")] public static string TestStringForDebugOnly(this HtmlHelper helper, string testString) { return testString; } But obviously that would give a c...

Number of arguments in macro definition

Hello, I have some templated function which has different number of arguments due to the template-type. This function is wrapped with macro definition. #define SomeTemplate(TemplateType, Arguments) someFunc<TemplateType>(Arguments); Everything is okay until I'm using only 1 argument for function calling. But I need in more. I looked a...

Is there a way to 'expand' the #define directive?

I have a lot of "stupid" #define in a project and i want to remove them. Unfortunately, i can't do a simple search&replace, since the #define is parametrized. For example: #define FHEADGRP( x ) bool _process_grp##x( grp_id_t , unsigned char ) This is used to generate headers of a couple of functions. I would like to somehow do the sam...

How to redefine a macro using its previous definition

Suppose I have the following macro: #define xxx(x) printf("%s\n",x); Now in certain files I want to use an "enhanced" version of this macro without changing its name. The new version explores the functionality of the original version and does some more work. #define xxx(x) do { xxx(x); yyy(x); } while(0) This of course gives me red...

C Preprocessor and if-else condition statement question

I run my C code in vs2010 (win32 console application). It was compiled as c++ application. #include "stdafx.h" #define YES 1; #define NO 0; // function to determine if an integer is even int isEven(int number) { int answer; if ( number % 2 == 0) answer = YES; else answer = NO; retu...

How to define a constant conditionally

Hi All, I want to define some constants in my C file. Its assembly code like this: Const1 = 0 Const2 = 0 IF Condition1_SUPPORT Const1 = Const1 or (1 shl 6) Const2 = Const2 or (1 shl 3) ENDIF IF Condition2_SUPPORT Const1 = Const1 or (1 shl 5) Const2 = Const2 or (1 shl 2) ENDIF Could you tell me the simplest w...

Concatenation problems with debug print macro under gcc

Hi Folks. To completely disable a debug output in c-source, I usually define the following SIMPLE macro #1 #define dprintf(args) To enable a debug output, I define macro #2 alternatively #define dprintf(args) printk##args The usage in source looks like: dprintf(("Irqs:%lu\n",irqs)); A preprocessor should create following line if...

Why so many parentheses in SUCCEEDED macro?

Windows SDK features SUCCEEDED macro: #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) -----------------------^-------------^----- clearly as with other macros there're parentheses to ensure right interpretation of the intent by compiler. What I don't get is why there're parentheses around (HRESULT)(hr) (I marked them with ^ character). ...

How to concatenate 2 or more Integers using Macros?

If a=1, b=2, c=3... i would like to write a macro which concatenates them like this 123. But when i try this: #include<stdio.h> #define cat(a,b,c) a##b##c int main() { int a=1,b=2,c=3,d; d=cat(1,2,3); //Works d=cat(a,b,c); // Returns an error...How to make this work? return 0; } ...

Add a custom tool to toolchain to remove UTF-8 BOM before compile

My question is in the context of Code::Blocks and its tweaked version of MinGW, and Notepad++ . I want to be able to include Unicode literals in my source, and I can, so long as I use UTF-8 and not use a BOM. This works fine, up to a point, but it BOMs out (bad pun) whenever I reopen the file; it (not surprisingly) has this un-nerving ...

Is the C99 preprocessor Turing complete?

After discovering the Boost preprocessor's capabilities I found myself wondering: Is the C99 preprocessor Turing complete? If not, what does it lack to not qualify? ...

Preprocessor macro based code yields a C2400 error

#define CANCEL_COMMON_DIALOG_HOOK(name) \ void __declspec(naked) ##name##CancelCommonDialogHook(void) \ { \ __asm \ { \ add esp, [k##name##CancelCommonDialogStackOffset] \ jz RESTORE \ jmp [k##name##CancelCommonDialogNewFileRetnAddr] \ RESTORE: \ pushad \ call ...

Implementation of string literal concatenation in C and C++

AFAIK, this question applies equally to C and C++ Step 6 of the "translation phases" specified in the C standard (5.1.1.2 in the draft C99 standard) states that adjacent string literals have to be concatenated into a single literal. I.e. printf("helloworld.c" ": %d: Hello " "world\n", 10); Is equivalent (syntactically) to: ...

Need some help with TFS2010 + an automated Build + 'Configurations to Build = Debug'

Hi folks, really. weird. shiz. When I do a TFS Team Build (with Remote Deploy), some #if DEBUG preprocessor directives code I have on a web page does not get called. When i manually one-click deploy (remote deploy) the preprocessor directive code works. When I debug locally, the code also works. So - problem looks to be related to my ...

Reusing/incrementing c macro definition?

Is there a way to do #define A f1(); #define A A f2(); // this is wrong #define A A f3(); // this is wrong ... #define A A fn(); // this is wrong A and then get f1(); f2(); f3(); ... fn(); ...

C++: strange behaviour with templates and #defines

I have the following definitions: template<typename T1, typename T2> class Test2 { public: static int hello() { return 0; } }; template<typename T> class Test1 { public: static int hello() { return 0; } }; #define VERIFY_R(call) { if (call == 0) printf("yea");} With these, I try to compile the following: VERIFY_R( Test1<int...

Size of #define values

If a value is defined as #define M_40 40 Is the size the same as a short (2 bytes) or is it as a char (1 byte) or int (4 bytes)? Is the size dependent on whether you are 32-bit or 64-bit? ...

Detect compilation on Bada OS

Hi, I would like to do something similar to #ifdef __linux__, but with the bada SDK. Is there a constant defined by default? Also, can I detect when I am compiling for the simulator? ...

Define BIT0, BIT1, BIT2, etc Without #define

Is it possible in C++ to define BIT0, BIT1, BIT2 in another way in C++ without using #define? #define BIT0 0x00000001 #define BIT1 0x00000002 #define BIT2 0x00000004 I then take the same thing and make states out of those bits: #define MOTOR_UP BIT0 #define MOTOR_DOWN BIT1 Note: I am using 32 bits only, not 64 bits. I am also usi...

Meaning of #undef in C++

i know what this means #define M(B) (1U << ((sizeof(x) * CHAR_BIT) - B)) // CHAR_BIT=bits/byte but i dont understand well this one #undef M after this what happens? M is cleared or deleted or? ...