我有一些函数func.py,我想从我的web2py控制器访问调用default.py.我试图导入和使用func.py在default.py与"进口FUNC"和"calculatesomething = func.calculatesomething",但它不工作.该文件func.py也添加在我的web2py程序的Modules部分中.
为什么不工作?我怎样才能让它发挥作用?如果该模块是func.py或default/func.py或其他什么东西?
我正在尝试在宏中生成包含文件名.这在C++中应该是合法的:
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是一旦我尝试生成文件名就很难编译
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
Run Code Online (Sandbox Code Playgroud)
实际上它给了我MSVC2010的警告
警告C4067:预处理器指令后面的意外令牌 - 期望一个newlin
但它不包括该文件.
问题是什么?我怎么能摆脱它?
我有一个我继承的C++应用程序,它包括:
换句话说,我的代码如下所示:
// main.C
#include <app1/a1l1.H>
#include <app2/a2l1.H>
#include <ext1/e1l1.H>
// app1/a1l1.H
#include <app1/a1l2.H>
#include <ext2/e2l1.H>
// app2/a2l1.H
#include <ext2/e2l2.H>
// ext1/e1l1.H
#include <ext3/e3l1.H>
// ext3/e3l1.H
#include <ext4/e4l1.H>
Run Code Online (Sandbox Code Playgroud)
问题:
1)如何判断哪些库已链接到最终可执行文件?这必须包括静态链接的
换句话说,我想要一个"app1,app2,ext1,ext2,ext3,ext4"的答案
理想情况下,答案可以从可执行文件本身获得(我已经构建了它的调试版本以防止它变得更加可能).如果这是不可能的,我想知道是否有一个简单的代码分析工具(即gcc本身内部的某些东西)来提供该分析.
请注意,已经构建了外部库的目标文件,因此查看构建日志以查看链接的内容,我担心"ext4"不会显示在日志中,因为我们不会构建"ext3" "已经预建的图书馆.
注意:运行"nmake"并将DEPS设置为yes以重建所有不是一个选项.但我可以访问外部库的完整源代码.
2)一个稍微单独且不太重要的问题,我如何告诉我正在构建的整个源代码树中使用的所有包含文件的列表.再次,理想情况下frm已经构建的可执行文件,我有一个调试版本.
=================
更新:为了澄清,我们的库是静态链接的,因此ldd(List Synamic Dependencies)不起作用.
此外,答案可以是Solaris或Linux - 无关紧要.
我试过使用nm但没有列出库
网上有很多这两个例子.php手册说"include()语句[...]",这似乎是矛盾的 - 如果它是一个声明,它不应该没有括号吗?
这两项工作:
include('somefile.php');
include 'somefile.php;
Run Code Online (Sandbox Code Playgroud)
我或其他任何人都应该关心吗?
我希望有一种方法可以将#include指令分成两行,这样我的代码就可以符合每行80个字符,尽管需要很长的包含路径.
除了扩展编译器的搜索路径之外,我该如何管理呢?有没有办法将我的长路径字符串分成两行?
"#define"宏扩展显然发生在#include扩展之后,所以这些不起作用:
#define BIGPATH "..."
#include BIGPATH ## "/foo.c"
#include "BIGPATH/foo.c"
#include BIGPATH"/foo.c"
Run Code Online (Sandbox Code Playgroud)
我也试过了
#include "foo" ##
"bar"
Run Code Online (Sandbox Code Playgroud)
和
#include "foo" \
"bar"
Run Code Online (Sandbox Code Playgroud)
无济于事.也许我想要的是不可能的?帮助我,stackoverflow kenobi,你是我唯一的希望.
答案:建立在下面的建议答案上,这是实际对我有用的:
#define STRINGIFY(x) #x
#define PATH(path) STRINGIFY(/my/very/long/path)
#include PATH(foo.h)
#undef PATH
#undef STRINGIFY
Run Code Online (Sandbox Code Playgroud) 在"工作目录"中,我有很多*.cpp和*.h文件,#include彼此和子目录中的文件.
例如:
#include "first.h"
#include "second.h"
#include "dir1/third.h"
#include "dir2/fourth.h"
Run Code Online (Sandbox Code Playgroud)
在我自己的目录中(与"工作"目录不同)我想创建一个新的*.cpp和*.h文件,其中包含"working"目录中的一个文件.例如:
#include "/root/workingdirectory/first.h"
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.因为"first.h"可能包含"second.h",而"second.h"不在我的目录中.有没有办法告诉编译器它需要搜索不在当前但在工作目录中的包含文件:/root/workingdirectory/?
使它更复杂,dir1并且dir2不在我的工作目录中.它们位于/root/workingdirectory2/.所以,我的第二个问题是,是否有可能通过让编译器知道子目录位于其他地方来解决这个问题?
我还需要补充一点,我不使用任何环境进行开发并从命令行编译(使用g++).
我开始学习C++,并且我读了一本书,写道我必须使用<string>头文件,因为字符串类型不直接构建到编译器中.如果我使用<iostream>我可以使用字符串类型.
<string>如果我想包含标题,我是否必须包含<iostream>标题?为什么?有什么区别吗?
我有jsp页面看起来像这样:
<%@ include file = "/Title.jsp" %>
<%@ include file = "/Header.jsp" %>
<html>...</html>
Run Code Online (Sandbox Code Playgroud)
在Title.jsp中有一个"user"的实例,让我们说:
User user = new User();
Run Code Online (Sandbox Code Playgroud)
在Header.jsp中,用户被引用为
user.setName("John");
Run Code Online (Sandbox Code Playgroud)
Eclipse在header.jsp文件中显示"用户无法解析为变量"的错误.我完全理解为什么.有没有办法让Eclipse忽略这个特定变量的特定错误?有什么可以在这里完成的吗?
在工作中,我支持一些旧的(和大而丑陋的)Java应用程序,它实际上是一个Web应用程序.我正在尝试将此Java项目转换为Java动态Web项目.在我转换它之前,Eclipse并不关心这些悬挂变量到处都是.现在,在Dynamic Web Project中,Eclipse正在抱怨.
重写代码是不可能的.每个jsp文件由多个包含大量全局变量的文件组成.我不会触及它比我需要的更多.
Say we have this header file:
#pragma once
#include <vector>
class MyClass
{
public:
MyClass(double);
/* ... */
private:
std::vector<double> internal_values;
};
Run Code Online (Sandbox Code Playgroud)
Now, whenever we use #include "MyClass.hpp" in some other hpp or cpp file, we effectively also #include <vector>, despite the fact that we do not need it. The reason I am saying it is not needed is that std::vector is only used internally in MyClass, but it is not required at all to actually interact …
我在我的机器上做了一个应用程序,它运行良好.我将它上传到服务器,它崩溃了以下错误:
node.js:116
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'xml2js'
at Function._resolveFilename (module.js:289:11)
at Function._load (module.js:241:25)
at require (module.js:317:19)
at Object.<anonymous> (/var/www/node/price/index.js:3:14)
at Module._compile (module.js:373:26)
at Object..js (module.js:379:10)
at Module.load (module.js:305:31)
at Function._load (module.js:271:10)
at Array.<anonymous> (module.js:392:10)
at EventEmitter._tickCallback (node.js:108:26)
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序开始的方式:
var express=require('express');
var http=require('http');
var xml2js = require('xml2js');
var sys = require('sys');
var util = require('util');
Run Code Online (Sandbox Code Playgroud)
我使用npm安装了express和xml2js.我的机器和服务器上的节点具有完全相同的版本(v0.4.0).
我确保xml2js和express驻留路径(/ usr/local/lib/node /)包含在节点查找模块的路径中.(我编辑了'module.js'文件来打印它寻找模块的路径.)
node.js:116
throw e; // process.nextTick error, or 'error' event on …Run Code Online (Sandbox Code Playgroud)