我有两个平台工具集:v110和v110_xp用于我的项目,并且根据所选平台,我想要包含/排除要编译的部分代码.
_MSC_FULL_VER并且$(PlatformToolsetVersion)对于这两个平台工具集具有完全相同的值.或者,我尝试使用$(PlatformToolset)如下:
_MSC_PLATFORM_TOOLSET=$(PlatformToolset)
Run Code Online (Sandbox Code Playgroud)
但问题是这$(PlatformToolset)是非数字的.想知道如何将这个非数字值用作预处理程序指令?
尝试了几种解决方案,我发现了这一点
_MSC_PLATFORM_TOOLSET='$(PlatformToolset)'
Run Code Online (Sandbox Code Playgroud)
然后
#if (_MSC_PLATFORM_TOOLSET=='v110')
[Something]
#endif
Run Code Online (Sandbox Code Playgroud)
工作正常但是
#if(_MSC_PLATFORM_TOOLSET == 'v110_xp')
[SomethingElse]
#endif
Run Code Online (Sandbox Code Playgroud)
导致"字符常量中的字符太多"错误.
有关上下文,请参阅此类似问题: Visual Studio:如何以编程方式检查已使用的C++平台工具集
c++ project-properties preprocessor-directive visual-studio-2012
我希望我可以使用golang执行以下代码:
package main
import (
"fmt"
"time"
)
func getA() (int) {
fmt.Println("getA: Calculating...")
time.Sleep(300 * time.Millisecond)
fmt.Println("getA: Done!")
return 100
}
func getB() (int) {
fmt.Println("getB: Calculating...")
time.Sleep(400 * time.Millisecond)
fmt.Println("getB: Done!")
return 200
}
func main() {
A := go getA()
B := go getB()
C := A + B // waits till getA() and getB() return
fmt.Println("Result:", C)
fmt.Println("All done!")
}
Run Code Online (Sandbox Code Playgroud)
更具体地说,我希望Go可以处理场景背后的并发性.
这可能有点偏离主题,但我很好奇人们对这种隐式并发支持的看法.值得为它付出一些努力吗?什么是潜在的困难和缺点?
编辑:
要明确的是,问题不在于"Go现在正在做什么?",而不是"它是如何实现的?" 虽然我很欣赏@icza的帖子,关于我们应该期待什么,就像现在一样.问题是为什么它不能或不能返回值,以及这样做的潜在复杂性是什么?
回到我的简单示例:
A := go getA()
B := go getB()
C := …Run Code Online (Sandbox Code Playgroud)