小编mic*_*elp的帖子

Stringify C预处理

这是我的第一篇文章,所以如果我太模糊或提供每个人都会直观地假设的信息,请告诉我.

我很擅长用C语写作,我只是想更好地理解预处理.我正在编写一个简单的程序,可以直接从控制台使用gcc -Wall -std=c99 -DSEED=argument参数,我的参数应该是一个整数,或者如果-D没有定义,用户将输入它.

SEED值仅用于srand().我很困惑,为什么我的代码不能编译,如果我输入一个-DSEED=a作为我的参数,而如果我把-DSEED=1它编译.我得到了一个"未声明的(在这个函数中首次使用)"错误并且真的不明白两者之间的区别.我认为#define变量类型与输入匹配,所以如果我输入"a"#SEED将是一个char,如果我输入"1"#SEED将是一个int.

如果未定义SEED,我正在使用#ifndef SEED命令,这很有效.我想我应该"输入"输入SEED,然后检查它是否是整数.在线阅读一些文章之后我正在尝试使用:

#ifndef SEED
    //code
#else
    #define TO_STRING( input ) #input
    char c;
    c = TO_STRING( SEED )
    //Then I was going to use c to figure out if it was an int.
#endif
Run Code Online (Sandbox Code Playgroud)

这是行不通的,任何能够指出你认为我可能有任何误解的人都会非常感激.

编辑 - 所以我确实弄清楚为什么我在尝试时收到错误消息-DSEED=a,因为它是将其作为变量读取.

c stringification c-preprocessor

3
推荐指数
1
解决办法
2469
查看次数

使用DTM Kill Switch for Adob​​e Analytics

背景

我们目前在数据层中有一个标志,当它设置为falseAdobe Analytics代码时将无法运行.

我们这样做有很多原因,包括我们在产品中或我们捕获的数据中发现任何安全问题.我们将其设置flag为false,它不再从我们的页面中提取Adobe Analytics脚本.

理想情况下,我们试图模仿DTM中的这些确切功能,而无需批准和发布任何内容.我们只是希望能够在数据库中设置一些内容,并且可以立即在所有页面上使用,我们不必担心公司的软件升级策略.

这就是说,我在想,既然数据元素在页面上加载第一,我可以抓住从数据层的值,然后使用一个if声明,_satellite.getVar()s_code确定是否AppMeasurement得到了实例化.

这是一个令人沮丧的失败.不仅_satellite.getVar()不可用,甚至只是设置if(false)不起作用.虽然我认为只有s_code将实例化AppMeasurement,显然只是让工具在DTM中处于活动状态意味着直接调用AppMeasurement函数.

更熟悉这个工具的人是否有任何想法可以让我们确定是否Adobe Analytics基于某种内容的运行(我们使用数据层,但我对所有建议开放)在页面上.

非常感谢你的时间,迈克

adobe-analytics

2
推荐指数
1
解决办法
1963
查看次数

编译Rcpp包

背景

我的公司正在考虑将R与RStudio一起带入我们的工作环境.作为安全检查的一部分,我们必须编译包中的每个不同的C/C++文件,以扫描可能的安全漏洞.我知道二进制文件是可用的,我真的希望我可以使用它们,但我们必须自己编译.我从大约5年前就没有R经验和一点c ++经验.我想要编译只是在RCPP C++代码,我不知道这是可能的.

我试过的

我首先尝试使用VisualStudio进行编译,发现它不符合c99.然后我尝试了cygwin并且它不支持w_strings.我现在已经安装了ubuntu,并且在编译时遇到了很多"未定义的引用"错误.我知道(或者至少我相信)Rcpp旨在帮助在R中使用C++.鉴于此,我是否可以将这些文件中的一些编译为独立的二进制文件?

我在编译时得到的一些空引用api.cpp(我不相信完整列表会提供比partial更多的信息,因为它很长):

undefined reference to 'R_NilValue'
undefined reference to 'REprintf'
undefined reference to 'R_FlushConsole'
undefined reference to 'Rf_install'
undefined reference to 'Rf_setAttrib'
undefined reference to 'Rf_mkChar'
undefined reference to 'SET_STRING_ELT'
undefined reference to 'Rf_allocVactor'
undefined reference to 'R_ExternalPtrAddr'
etc...
Run Code Online (Sandbox Code Playgroud)

现在我假设这不起作用,因为我没有按照预期的方式使用Rcpp并传入任何值.如果我尝试使用另一个使用Rcpp的R包来编译Rcpp C++文件并保留二进制文件?有什么我可以做的只是把二进制文件从CRAN中删除?

这实际上是一个相对简单的解决方案,我无法在其他任何地方找到,虽然大多数人只能下载二进制文件,所以无关紧要.

1)从CRAN下载(不是apt-get,对我来说不起作用)

2)sudo tar -xvf Rcpp_X.XX.X.tar.gz

3)R CMD INSTALL Rcpp

这将为您创建二进制.SO.

c++ r rcpp

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

标签 统计

adobe-analytics ×1

c ×1

c++ ×1

c-preprocessor ×1

r ×1

rcpp ×1

stringification ×1