我有一些头文件是为在C99程序中使用而编写的.此标头包含所有函数定义,并且不与源文件配对.我将它包含在C++文件中.
我的C++编译器标志包括-pedantic -std=c++11,它在头文件中给出了各种警告,例如"ISO C++禁止复合文字"和"ISO C++禁止可变长度数组".显然,C++编译器将C99代码视为C++.两个问题:
谢谢
当我编译一个C程序时,为了方便起见,我已经在最后包含了某个头文件的源文件.因此,如果main.c包含util.h,则util.h将包含util.c将使用的所有头文件,概述类型或结构等,然后在最后它包含util.c. 然后,当我编译时,我只需要使用gcc main.c -o main,剩下的就全部用了.
我一直在寻找C编码标准,试图弄清楚最好的做事方式是什么,而且有这么多,以及如此多的相互矛盾的观点,我不知道该怎么想.为什么这么多地方建议单独编译目标文件而不是将它们全部包含在网络中?util从来没有涉及过util.c,所以两者完全独立,理论上(我的理论)它会没问题,但我可能错了,因为这是计算机科学,人们错了,即使他们是对的,所以,如果我已经错了,我可能错了.
有人说头文件应该只是原型,源文件是包含它的源文件,它是必要的系统头文件.从纯粹的美学观点来看,我更喜欢在标题中使用所有信息(类型,系统标题,原型)(在本例中为util.h),并且在util.c中只包含一个函数代码(不包括一个"#include") util.h""在最顶层.
我想我得到的一点是,所有这些东西都有效,选择一种方法听起来对任何不了解背景的人来说都是随意的(我).请告诉我为什么和什么.
我想在我的视图中包含JavaScript文件.
我想将它们一起渲染而不是脚本文件(registerScriptFile).
我怎样才能做到这一点?
好的,这是主文件使用那些包含pm文件的方式
use Dancer;
use Net::OAuth2::Client;
use HTTP::Request::Common;
sub client {
Net::OAuth2::Client->new(
'0', # OAuth 2.0 client_id
'1234567890abcdef', # OAuth 2.0 client_secret
site => 'http://www.deviantart.com',
authorize_path => 'https://www.deviantart.com/oauth2/draft15/authorize?response_type=code',
access_token_path => 'https://www.deviantart.com/oauth2/draft15/token?grant_type=authorization_code',
access_token_method => 'GET',
)->web_server(
redirect_uri => uri_for('/auth/deviantart/callback')
);
}
Run Code Online (Sandbox Code Playgroud)
我已将这些PM文件放在与此目录相同的目录中但由于找不到而失败

这些文件就是这样开始的
package Net::OAuth2::Client;
package HTTP::Request::Common;
package Dancer;
Run Code Online (Sandbox Code Playgroud) 最佳实践说:在页脚中包含所有javascript.为了更快的页面加载.
同意..但是jquery当你$在遗留代码库中通过你的身体html完成所有陈述时,你如何对你的include 做?
要么
$(document).ready在head?
更新
是否意味着 - 在基本包含之后,应该始终在页面的页脚中添加页内javascript jquery?
我的期望是在评论中.
require 'logger'
module Logging
attr_accessor :logger
def logger
return @logger if @logger # allow items to have own loggers
@@logger ||= Logger.new(STDERR)
puts "Instance Class REF ID#{@@logger.__id__}"
puts "Class ID #{self.class.logger.__id__}"
@@logger
end
module ClassMethods
def logger= logger
@logger = logger
end
def logger
@logger ||= Logger.new(STDERR)
puts "Class Instance REF ID #{@logger.__id__}"
@logger
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
class Test
include Logging
def wow
logger.info 'wow'
end
end
t = Test.new
# should be the same …Run Code Online (Sandbox Code Playgroud) 除了好的做法,我试图让编码对我自己来说更容易.
是否可以创建一个头文件来处理无数的包含,以便源可以只包含一个头?
编辑:有些人正在引用Cocoa.我忘了提到C/C++编程.它在标签中,但我忘了把它放在这里.
编辑:没关系.看来我带着这个问题踩到了一个蚁丘.学过的知识.
这是我的两个类,Node和DobleNode,它们都在不同的.h文件中,并且它们都有自己的.cpp文件.
//"Node.h"
class Node
{
public:
Node(string pName, string pID);
void setReferencia(DobleNode *pReferencia);
DobleNode* getReferencia(void);
private:
string Name;
string ID;
DobleNode *referencia;
};
//"DobleNode.h"
class DobleNode
{
public:
DobleNode(string pBank_code, string pCard_type);
void setReferencia(Node *pReferencia);
Node* getReferencia(void);
private:
string bank_code;
string card_type;
Node *referencia;
};
Run Code Online (Sandbox Code Playgroud)
问题是我需要一个参考.在类Node中,必须存在DobleNode类型的属性,并且在类DobleNode中必须存在Node类型的属性.它似乎非常简单,我只需要在"Node.h"之前加入"DobleNode.h",一切都会正常工作......
但是,如果我这样做,稍后,当我尝试编译我的小程序时,它表示标识符Node不存在.如果我以另一种方式执行,它会说同样的事情,但这次标识符DobleNode是不存在的标识符.
我怎么能解决这个问题,我认为解决方案可能是将两个类放在同一个文件中,但我认为有更好的解决方法.有没有办法"告诉"编译器同时检查"Node.h"和"DobleNode.h",还是什么?
感谢您的回答.
顺便说一下,我正在研究Visual Studio 2010 Proffesional,C++(很明显).
我特别想到<iostream>这里.由于它是大多数C++程序使用的常见库,为什么不包含默认值?其他例子是<string>,<fstream>和<cstdlib>.
我需要检查是否有数组
a1 = [x, y]
Run Code Online (Sandbox Code Playgroud)
以数组的数组表示
a2 = [ [a, b], [c,d], [e, f] ]
Run Code Online (Sandbox Code Playgroud)
使用Ruby 1.9.例如,if x == c和y == dthen函数必须是True.我试过了
a2.includes? a1而a1 in a2
但两者doesent工作.