标签: conditional-compilation

根据条件编译符号更改exe的名称

您是否可以告诉Visual Studio输出不同的exe文件名,具体取决于是否设置了特定的条件编译符号?

c# msbuild conditional-compilation visual-studio

9
推荐指数
2
解决办法
9118
查看次数

.NET 4的条件编译

可能重复:
C#条件编译和框架目标

我有一些代码在.NET 4中工作,但在.NET 3.5中不起作用,在.NET 3.5中它需要使用对Windows的互操作调用.

我想在两种情况下使用"ifdef"来使用不同的代码路径(最终我将弃用.NET 3.5代码).

是否有预定义的指令值来确定何时使用.NET4编译代码?是否有与所有预定义指令(DEBUG,TRACE,...)的良好链接?以下链接仅提供指令,但不提供标准预定义值:

http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx

c# conditional-compilation .net-4.0 conditional-statements

9
推荐指数
2
解决办法
9883
查看次数

在MVC视图中使用条件编译符号

在我的项目的"属性"中,我有以下内容:

在此输入图像描述

我想检查TEST符号是否存在,然后才做一些事情.所以我做了你在下面的图片和它所在的课程中所看到的.但是这在视图中不起作用.

在此输入图像描述

即使TEST已定义,此块中的文本也是灰色的!

如果TEST定义了,我怎么能使它工作?

views conditional-compilation asp.net-mvc-3

9
推荐指数
2
解决办法
3717
查看次数

如何检查环境变量的存在?

文件if/ ifdef略显混乱.因为<?if [expression] ?>,它说:

  • 变量可用于检查是否存在
    ......
  • 如果变量不存在,则评估将失败并且将引发错误.

事实证明,如果你只是去:<?if $(env.MY_VAR) ?>并且MY_VAR没有定义,编译将失败.我如何检查存在?

通常情况下,这是人们使用的地方ifdef,但这些工作在Wix中也很奇怪.$(var.Variable)他们使用而不是使用语法,这<?ifdef Variable?>意味着不能以这种方式检查环境变量.

我需要做些什么来获得正常的c预处理器:

#ifdef MY_ENVIRONMENT_VARIABLE
Run Code Online (Sandbox Code Playgroud)

在威克斯?

wix conditional-compilation environment-variables

9
推荐指数
2
解决办法
4060
查看次数

你如何使用类型特征进行条件编译?

我正在尝试编写像这里的代码,但使用C++ 11功能,没有Boost.

这个例子中,我尝试response_trait在特征的结果上定义一个和basee条件编译.我怎样才能做到这一点?

#include <vector>
using namespace std ;

struct Vector{ float x,y,z ; } ;
struct Vertex { Vector pos ; } ;
struct VertexN { Vector pos, normal ; } ;
struct Matrix {} ;

template <typename T>
struct response_trait {
  static bool const has_normal = false;
} ;

template <>
struct response_trait<VertexN> {
  static bool const has_normal = true;
} ;

template <typename T>
struct Model
{
  vector<T> verts …
Run Code Online (Sandbox Code Playgroud)

c++ conditional-compilation type-traits

9
推荐指数
1
解决办法
3482
查看次数

确定是否在IDE中执行的方法?

C#/VBin中Visual Studio 2010,有没有办法在代码中确定程序当前是否在IDE中运行?

eg. If ProgramRunningInIDE Then MessageBox.Show exc.Message
Run Code Online (Sandbox Code Playgroud)

c# vb.net ide conditional-compilation visual-studio-2010

9
推荐指数
1
解决办法
6692
查看次数

我如何有条件地编译emscripten的代码?

使用支持构建多个操作系统的代码库,只有在需要对Emscripten进行修改时才能将它们集成到同一代码库中,并在条件编译的帮助下使其继续在其他环境中工作.

但是,似乎没有任何关于这个主题的文档,这对我来说似乎很糟糕,我也无法找到任何关于它的问题,这对我来说似乎非常令人惊讶 - 我预计它会被很好地践踏并记录下来.

我怎样才能做到这一点?

(我看过tools/shared.py,这似乎暗示#ifdef EMSCRIPTEN或者#ifdef __EMSCRIPTEN__可以使用;我仍然会问这个问题,以确定我是否正确,如果这是正确的方法,甚至可能应该使用它.)

conditional-compilation emscripten

9
推荐指数
2
解决办法
3499
查看次数

我可以定义一个环境变量并在条件编译中使用它吗?

我知道我可以在*.h文件中执行此操作:

#ifdef _DEBUG
#pragma comment(lib, "libtiffd.lib")
#else
#pragma comment(lib, "libtiff.lib")
#endif
Run Code Online (Sandbox Code Playgroud)

但我想要一种方法,我可以做这样的事情:

#ifdef V2.4.6
#ifdef _DEBUG
#pragma comment(lib, "opencv_calib3d246d.lib")
#else
#pragma comment(lib, "opencv_calib3d246.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "opencv_calib3d249d.lib")
#else
#pragma comment(lib, "opencv_calib3d249.lib")
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

和V2.4.6是一个环境变量.我可以这样做吗?

我不想在Visual Studio或代码中定义V2.4.6,因为它在不同的系统上会有所不同.

c c++ conditional-compilation visual-studio

9
推荐指数
1
解决办法
3266
查看次数

'#' - 字符必须位于C预处理器中的一行的开头吗?

我已经编程了C很长一段时间了.在这段时间里,我了解到在第一列放置预处理程序指令之前的"#"字符是一种常见的约定.

例:

 #include <stdio.h>

 int main(void) {
 #ifdef MACRO1
 #ifdef MACRO2
      puts("defined(MACRO1) && defined(MACRO2)");
 #else
      puts("defined(MACRO1)");
 #endif
 #else
      puts("!defined(MACRO1)");
 #endif
      return 0;
 }
Run Code Online (Sandbox Code Playgroud)

当人们缩进他们的预处理器指令时,他们通常会这样做:

 #include <stdio.h>

 int main(void) {
 #ifdef MACRO1
 # ifdef MACRO2
     puts("defined(MACRO1) && defined(MACRO2)");
 # else
     puts("defined(MACRO1)");
 # endif
 #else
     puts("!defined(MACRO1)");
 #endif
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我不认为我曾见过有人像这样格式化:

 #include <stdio.h>

 int main(void) {
 #ifdef MACRO1
  #ifdef MACRO2
     puts("defined(MACRO1) && defined(MACRO2)");
  #else
     puts("defined(MACRO1)");
  #endif
 #else
     puts("!defined(MACRO1)");
 #endif
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果C语言标准要求#-character应该在第一列.

那么上面的第三个选择是否合法?

如果以上所有案件都合法,那么我想知道这是否合法.

 #include <stdio.h>

 int main(void) { …
Run Code Online (Sandbox Code Playgroud)

c syntax conditional-compilation language-lawyer c-preprocessor

9
推荐指数
2
解决办法
1492
查看次数

如何通过条件编译更改函数的限定符?

我有一个能够实现为const:

#![feature(const_fn)]

// My crate would have:

const fn very_complicated_logic(a: u8, b: u8) -> u8 {
    a * b
}

// The caller would have:

const ANSWER: u8 = very_complicated_logic(1, 2);

fn main() {}
Run Code Online (Sandbox Code Playgroud)

我想继续支持稳定的Rust,因为无法定义这样的函数.这些稳定的消费者将无法使用该功能在一个conststatic,但应该可以使用该功能在其他情况下:

// My crate would have:

fn very_complicated_logic(a: u8, b: u8) -> u8 {
    a * b
}

// The caller would have:    

fn main() {
    let answer: u8 = very_complicated_logic(1, 2);
}
Run Code Online (Sandbox Code Playgroud)

我如何有条件地编译我的代码,以便我的箱子的冒险用户可以启用const fn支持,稳定的用户仍然可以使用我的代码,而且我不必编写每个函数两次?

同样的问题应该适用于函数的其他修饰符,但我不确定这些修饰符会根据某些条件发生变化的具体情况:

  • default
  • unsafe …

conditional-compilation rust

9
推荐指数
1
解决办法
168
查看次数