标签: preprocessor

Visual C++:如何在代码中嵌入和显示编译时消息?

有没有办法在编译期间显示的代码中嵌入消息,当编译该代码时?消息本质上是诊断性的,不应修改或中止编译过程.

(免责声明:我知道这个问题的答案.我没有在Stack Overflow上找到它,我认为这对知识库来说是一个有用的补充.)

preprocessor directive messages visual-c++

8
推荐指数
1
解决办法
7519
查看次数

如何在XCode上查看我的iPhone应用程序的TARGET_NAME?

我试图在同一个XCode项目中拥有我的iPhone应用程序的2个版本.代码库几乎相同,我需要有不同的行为,我决定使用预处理器的条件和${TARGET_NAME}标签.

我已经设置OTHER_CFLAGS为包含" -DTARGET_NAME=${TARGET_NAME}".

然后在我的代码中我试着做

#if TARGET_NAME == myApp
  NSLog(@"pro");
#elif TARGET_NAME == myAppLite
  NSLog(@"lite");
#endif
Run Code Online (Sandbox Code Playgroud)

不幸的是我总是打印出"精简版",因为TARGET_NAME == myApp它始终是真的:自TARGET_NAME定义之后.我不能为我的生活弄清楚如何评估这个字符串比较.任何的想法?

提前致谢

iphone xcode preprocessor

8
推荐指数
1
解决办法
8622
查看次数

除了autoconf之外,m4还有值得注意的用途吗?

有人知道m4除autoconf之外的任何用途(最好是在ac或c ++环境中),这不仅仅是一个学术上的延伸,因为它有助于解决一个问题,否则(例如使用"标准"预处理器)难以解决.

我问这个是因为我正在考虑用c ++做一个项目的方法,我希望通过使用脚本,预处理器,whatevers来减少或减少冗余.

c c++ autoconf preprocessor m4

8
推荐指数
2
解决办法
1885
查看次数

预处理器和编译器之间的边界究竟在哪里?

根据各种消息来源(例如,与Kevlin Henney的SE电台节目,如果我没记错的话),"C with classes"是用预处理器技术实现的(输出然后被输入到C编译器),而C++一直是用编译器实现(刚好在早期就吐出了C).这似乎引起了一些混乱,所以我想知道:

预处理器和编译器之间的边界究竟在哪里?你什么时候调用一个实现语言"预处理器"的软件,什么时候称它为"编译器"?

那么,"编译语言"是一个既定术语?如果是这样,究竟是什么意思?

c++ compiler-construction preprocessor terminology

8
推荐指数
1
解决办法
528
查看次数

javascript中的#ifndef

我正在寻找一种解决方案,只在Javascript中使用与编译语言中的#ifndef完全相同的函数定义一次函数.我发现了一些应该模仿这个功能的库,但它们没有用.

我正在使用MVC 3 Razor并定义了一些html助手,它们确实将用户控件放在页面上.

每个控件都有一组javascript函数,用于定义该控件的特定功能,因此这里存在一个问题:当在单个页面上多次调用帮助程序时,函数会多次定义.

我希望找到一种方法来保持在帮助程序中定义的少量javascript,而不必将这些小帮助程序中的每一个的所有javascript划分到一个单独的文件中.

样品:

@helper CmsImage(int id)
{
  var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html;

  <text>
    <input type="button" class="editor_function" style="display: none;" onclick="editImage(@id); return false;" />
    <script>
        function editImage(id) {
            $('#alt_text' + id).attr('value', $('#' + id).attr('alt'));
            $('#image_url' + id).attr('value', $('#' + id).attr('src'));
        }

        function saveImage(button, id) {
            $(button).parent().parent().removeClass('color-yellow').addClass('color-red');
            $(button).parent().siblings('div.widget-content').html('<img alt="' + $('#alt_text' + id).val() + '" src="' + $('#image_url' + id).val() + '" id="' + id + '" />');
        }
        #endif 
    </script>
    Image Url:
    <input type="text" id="image_url@{id.ToString();}" /><br />
    Alt Text: …
Run Code Online (Sandbox Code Playgroud)

javascript preprocessor

8
推荐指数
3
解决办法
2万
查看次数

Eclipse CDT禁用代码背景颜色

在尝试查看禁用的代码时遇到奇怪的代码着色问题.

对于使用#ifdef#ifndef语句禁用的代码块,我得到灰色/白色背景:

残疾代码的Eclipse灰色背景

但是,当代码启用时,事情就可以了:

Eclipse正确启用代码的背景

我在哪里可以在属性菜单中找到此颜色属性?我找不到任何关于禁用代码的信息,它不在任何预处理器颜色编码菜单下.

eclipse color-scheme preprocessor

8
推荐指数
1
解决办法
2769
查看次数

评论中的变量扩展

是否可以在bash脚本中的注释中扩展变量?

我想写一个脚本来提供给SGE.该qsub语法允许我将其他参数传递到使用bash脚本与开始内部线网格引擎#$.例如,

#$ -q all.q
#$ -S /bin/bash
#$ -V
#$ -m beas
#$ -o run_20120103.out
Run Code Online (Sandbox Code Playgroud)

我想要的是,-o参数是动态设置为变量的$1.所以我会天真地写

#$ -o run_${1}.out
Run Code Online (Sandbox Code Playgroud)

但是,由于行以a开头#,bash忽略它并且变量$1未展开.

有任何想法吗?一些bash预处理器?还有其他方法吗?

编辑我只是选择了$1一个例子.它也可以$FOO$BAR.

bash preprocessor sungridengine

8
推荐指数
1
解决办法
1564
查看次数

Perl中的C代码预处理

我在C代码解析器上工作Perl.

目前我需要预处理代码.预处理的实现似乎需要做很多工作,所以我正在寻找一个允许预处理文件的脚本或库.

我发现了以下可能性:

  1. 文字:: CPP
  2. 过滤:: CPP

这两个都需要cpp我在Windows机器上没有的.还有其他选择吗?

c perl preprocessor

8
推荐指数
1
解决办法
1149
查看次数

在Swift中创建一个"forCount"控件结构

在许多项目中,这种控制结构是可读性的理想选择:

forCount( 40 )
 {
 // this block is run 40 times
 }
Run Code Online (Sandbox Code Playgroud)

你可以 在objective-C中做到这一点.

鉴于Swift 对宏的方法与 objective-c的方法截然不同,

有没有办法forCount(40)在Swift项目中创建这样的控制结构?


Swift中的一些类似概念:

for _ in 1...40
 { // this block is run 40 times }
Run Code Online (Sandbox Code Playgroud)

使用Int巧妙扩展 ...

40.times
 { // this block is run 40 times }
Run Code Online (Sandbox Code Playgroud)

macros language-features preprocessor swift

8
推荐指数
1
解决办法
501
查看次数

反序列化marshmallow中的嵌套字段

我正在使用返回类似以下内容的API:

{'name': 'foo', 'start': {'date': '2016-06-19', 'time': '18:00'}}
Run Code Online (Sandbox Code Playgroud)

我想用棉花糖去除它,只获得名称和开始日期,所以期望的结果如下:

{'name': 'foo', 'date': '2016-06-19'}
Run Code Online (Sandbox Code Playgroud)

但我没有找到任何方法来获取日期,这是我尝试过的:

from marshmallow import Schema, fields, pprint

event = {'name': 'foo', 'start': {'date': '2016-06-19', 'time': '18:00'}}
class EventSchema(Schema):
    name = fields.Str()
    date = fields.Str(load_from='start.date')


schema = EventSchema()
result = schema.load(event)
pprint(result.data)
Run Code Online (Sandbox Code Playgroud)

python preprocessor transformation marshmallow

8
推荐指数
2
解决办法
5615
查看次数