我无法让Visual Studio按照我的预期行事.我创建了2个配置文件.一个定义了符号FOO,另一个定义了符号BAR.我有这个代码:
static class MyClass{
#if FOO
public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
public static string const MyData="bar defined";
#endif
}
Run Code Online (Sandbox Code Playgroud)
然后在我的另一个文件中
if(MyClass.MyData=="foo defined").....
Run Code Online (Sandbox Code Playgroud)
好吧,在我的应用程序中,我收到一个错误,即未定义MyClass.MyData.
此外,如果我在FOO配置文件上有它并输入类似#error test之后#if FOO它将有一个构建错误,但如果我删除它将构建就好了,当我去运行它时,我会得到一个编译错误, MyClass不包含MyData的定义.此外,这是一个ASP.Net Web应用程序.
有人可以帮我弄清楚如何使用条件编译吗?它就好像Visual Studio使用编译符号正确编译它一样,但是每当ASP.Net网络服务器执行它时,它都会重新编译它而没有任何符号...但这只是没有任何意义,为什么它会这样做..
编辑:如果我使用FOO或BAR配置文件并不重要,它们似乎都没有像它们那样定义MyData符号.
EDIT2:
好的,这对于复制很重要!App_Code在解决方案中创建一个新文件夹,然后在其中添加.cs文件,然后将MyClass添加到其中.这将重现在空白项目中工作的错误.我实际上简化了它
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
Run Code Online (Sandbox Code Playgroud)
看起来Visual Studio没有为App_Code中的常规.cs文件设置条件编译符号
英特尔C++在编译时是否预先定义了一些宏Qstd=c++0x?像__GXX_EXPERIMENTAL_CXX0X__海湾合作委员会那样的东西 ?__cplusplus还在199711.
有没有办法检测C++ 0x编译?
在stackoverflow上阅读这篇文章想要在编译发布模式时加载不同的css.
码:
@{ #if (Debug)
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
#else
<link href="@Url.Content("~/Content/Site-min.css")" rel="stylesheet" type="text/css" />
#endif
}
Run Code Online (Sandbox Code Playgroud)
尝试2
@{ #if (Debug) }
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@{ #else }
<link href="@Url.Content("~/Content/Site-min.css")" rel="stylesheet" type="text/css" />
@{ #endif }
Run Code Online (Sandbox Code Playgroud)
我尝试以大写形式进行DEBUG但是在编译Debug to Release时没有任何改变没有效果
conditional-compilation visual-studio-2010 razor c#-4.0 asp.net-mvc-3
在Flex中,现在可以使用-define编译器选项来执行各种很酷的操作.在我的程序中,我使用的选项使得我的一些代码被这样的块排除:
CONFIG::FACEBOOK{
//Some code
}
Run Code Online (Sandbox Code Playgroud)
而且效果很好.
如何使用MXML获得类似的行为?
我想做同样的事情,但是以这种方式省略/包括MXML标签,而不是AS代码块.
apache-flex mxml conditional-compilation actionscript-3 flex4.5
如何针对标准库的多个版本编写Agda代码?
例如Data.Maybe.IsJust,重命名为Data.Maybe.Is-just.同样地Data.Fin.Props转向Data.Fin.Properties.遗憾的是,投入很少的工作来保持向后兼容性,因此即使针对相邻版本也很难实现.像运行cpp作为预处理器这样的常规选项是不方便的,因为它们打破了emacs agda2-mode.
C++ Builder中Android,iOS,Win32,Win64的平台条件定义是什么?我发现只有Delphi的例子.
我正在构建一个覆盆子pi的应用程序,并使用pi4j作为GPIO上软件PWM的依赖.我想在我的本地机器上测试我的代码,所以我想在没有pi4j依赖项的情况下编译我的代码并跳过对库的方法调用.
示例代码:
(ns led-server.model
(:require [clojure.tools.logging :as log])
(:import [com.pi4j.wiringpi SoftPwm Gpio])) ;; pi4j dependency, only compiles on rPi
(defn- soft-pwm-write [pin value]
(let [ival (Math/round (double (* value RANGE)))]
(SoftPwm/softPwmWrite pin ival) ;; call to pi4j. This is what I want to skip
(log/info "pin" pin "set to" ival))
)
Run Code Online (Sandbox Code Playgroud)
pi4j需要wiringPi C库,它只能在树莓派上使用(这很有意义).要在我的开发机器上进行测试,只需查看日志打印输出即可.我不想评论:import和方法调用测试,我想要一个更优雅的解决方案.
假设我有一个简单的nullary模板函数模板化在一个参数上,有两个特化,一个用于unsigned long,一个用于size_t(内容不重要):
template<typename T> T f(void);
template<> unsigned long f<unsigned long>(void) { return 1; }
template<> size_t f<size_t>(void) { return 2; }
Run Code Online (Sandbox Code Playgroud)
我的理解是该类型的确切定义size_t是依赖于平台的,因此它可能相同或不相同unsigned long.在我目前的平台上(Cygwin g ++ 5.2.0在Windows 10上进行64位编译-std=gnu++1y)这两种类型看起来是等价的,所以上面的代码无法编译:
../test.cpp:51:19: error: redefinition of ‘T f() [with T = long unsigned int]’
template<> size_t f<size_t>(void) { return 2; }
^
../test.cpp:50:26: note: ‘T f() [with T = long unsigned int]’ previously declared here
template<> unsigned long f<unsigned long>(void) { return 1; } …Run Code Online (Sandbox Code Playgroud) c++ templates conditional-compilation template-meta-programming
我想根据整数的大小有条件地编译代码,但我没有找到一种方法来确定预处理器阶段中整数的大小.
一个想法是使用INT_MAX并将其与常量进行比较:
#if INT_MAX >= 9223372036854775807UL
printf("64 bit\n");
#elif INT_MAX >= 2147483647UL
printf("32 bit\n");
#else
printf("16 bit\n");
#endif
Run Code Online (Sandbox Code Playgroud)
但我不认为UL文字可以那么大.而且ULL是不是在C89可用作据我所知.
那你对如何解决这个问题有什么建议吗?是否有一个宏在一些标准头文件中包含int的大小?
不是这个问题的重复,因为我实际上不需要通用sizeof,我不想打印它.我只需要区分条件编译的不同整数大小.
我正在编写模块的文档,该模块具有一些由Cargo功能标记控制的选项。我希望始终显示此文档,以便板条箱的使用者知道它可用,但是我仅在启用此功能时运行示例。
//! This crate has common utility functions
//!
//! ```
//! assert_eq!(2, featureful::add_one(1));
//! ```
//!
//! You may also want to use the feature flag `solve_halting_problem`:
//!
//! ```
//! assert!(featureful::is_p_equal_to_np());
//! ```
pub fn add_one(a: i32) -> i32 {
a + 1
}
#[cfg(feature = "solve_halting_problem")]
pub fn is_p_equal_to_np() -> bool {
true
}
Run Code Online (Sandbox Code Playgroud)
[package]
name = "featureful"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]
[features]
solve_halting_problem = []
[dependencies]
Run Code Online (Sandbox Code Playgroud)
在启用该功能的情况下运行,将按预期运行两个doctest:
//! This crate …Run Code Online (Sandbox Code Playgroud)